位置: IT常识 - 正文

react @connect的作用简单理解(dva @connect)(react connect用法)

编辑:rootadmin
react @connect的作用简单理解(dva @connect) 一、前言

推荐整理分享react @connect的作用简单理解(dva @connect)(react connect用法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:react connect方法,react connect原理,react usecontent,react connect原理,react-rewired,react中connect的作用,react connect用法,react connect原理,内容如对您有帮助,希望把文章链接给更多的朋友!

最近在自学react,发现项目中用到了@connect这个方法,但是不知道是什么意思;

网上百度,发现有这样解释的:

connect的作用是将组件和models结合在一起。将models中的state绑定到组件的props中。并提供一些额外的功能,譬如dispatch

还有这样解释的:

connect用来链接组件和状态管理器。你可以通过dispath调用对应仓库中的方法,也可以通过在this.props下找到仓库的数据进行操作。

还有这样的:

connect 方法返回的也是一个 React 组件,通常称为容器组件。因为它是原始 UI 组件的容器,即在外面包了一层 State。connect 方法传入的第一个参数是 mapStateToProps 函数,mapStateToProps 函数会返回一个对象,用于建立 State 到 Props 的映射关系。

这种东西初学者看了也不明白是什么意思,感觉不够通俗易懂。(反正本人是没看懂)

后来,终于自己琢磨明白了,在此总结下。

二、@connect的作用个人理解

1.首先,是react项目里用到了@connect注解,点击这个注解进入源码,发现路径是node_modules\dva\index.d.ts,因此也可以说是dva中的@connect。

react @connect的作用简单理解(dva @connect)(react connect用法)

2.本人的项目中,是这样使用的:

@connect(({ loading, OnlineTrainSet, codeselect }) => ({ OnlineTrainSet, codeselect, loading: loading.models.OnlineTrainSet,}))

(1)@connect的意思是,将models中的状态(state)装到组件的props里。

(2)具体到这里,就是会把OnlineTrainSet,codeselect,loading装入this.props里面,后续使用this.props.OnlineTrainSet,this.props.codeselect,this.props.loading就可以使用了。

(3)OnlineTrainSet,是本人的项目中有一个文件项目名\src\pages\MyOnlineTrainSet\models\OnlineTrainSet.js ,内容有:

export default { namespace: 'OnlineTrainSet', state: { currView: 'home', currData: {},......

注意,这个文件里namespace: 'OnlineTrainSet',上方@connect里用OnlineTrainSet就可以装入了; state,就是装入this.props里的内容;

这个文件的位置在models文件夹里,所以能用@connect装入;

使用了@connect后,后续页面就可以使用this.props.OnlineTrainSet.currView、获取到的值就是home。

(4)codeselect,这个也类似,只不过是位于本人的项目中的项目名\src\models\codeselect.js(也是自己写的js,注意位置是另一个models文件夹,总之也可以),其中也用到了namespace: 'codeselect'与state,所以也可以用@connect装入。

(5)loading,这个搜索namespace: 'loading'没有找到,应该是框架里实现的,也类似; 这里是把loading.models.OnlineTrainSet装入了this.props里面; 获取时,使用this.props.loading,取到的值就是loading.models.OnlineTrainSet的值; loading.models里,有各个文件的加载情况,如果正在加载中、就是true,如果不是、就是false; 所以,当this.props.loading为true时,就说明OnlineTrainSet.js文件正在加载中;(当this.props.loading为false时,就说明OnlineTrainSet.js文件加载完了;如果为null,就说明没有值、没有加载这个文件)

3.后续代码中,是这样使用的:

const { OnlineTrainSet } = this.props;//和这个一样//const OnlineTrainSet = this.props.OnlineTrainSet;console.log(OnlineTrainSet.treeData);

这个的意思是,

本文链接地址:https://www.jiuchutong.com/zhishi/290827.html 转载请保留说明!

上一篇:费尔南迪纳岛海岸的加拉帕戈斯海狮,厄瓜多尔科隆群岛 (© Tui De Roy/Minden Pictures)(费尔南迪纳岛气候类型)

下一篇:被阿尔卑斯山环抱的辛特湖,德国贝希特斯加登 (© Offset by Shutterstock)(阿尔卑斯山环保)

  • 微信消息显示更多怎么全部显示(微信消息显示更多信息)

    微信消息显示更多怎么全部显示(微信消息显示更多信息)

  • vivo如何设置自动锁屏(Vivo如何设置自动录音)

    vivo如何设置自动锁屏(Vivo如何设置自动录音)

  • 怎么在朋友圈发文字(怎么在朋友圈发定位导航)

    怎么在朋友圈发文字(怎么在朋友圈发定位导航)

  • 电脑睡眠模式无法唤醒(电脑睡眠模式无视频输入)

    电脑睡眠模式无法唤醒(电脑睡眠模式无视频输入)

  • 改微信号系统评估是什么意思(2020微信账号修改)

    改微信号系统评估是什么意思(2020微信账号修改)

  • 苹果11蓝牙找不到设备(苹果11蓝牙找不到其他设备)

    苹果11蓝牙找不到设备(苹果11蓝牙找不到其他设备)

  • 华为手机中间有个圈怎么取消掉(华为手机中间有一条绿线怎么解决)

    华为手机中间有个圈怎么取消掉(华为手机中间有一条绿线怎么解决)

  • mate30防水性能(mate30的防水性能)

    mate30防水性能(mate30的防水性能)

  • 复印扫描是什么意思(复印扫描有用吗)

    复印扫描是什么意思(复印扫描有用吗)

  • 华为nova6耳机插上没反应(华为nova6耳机插哪)

    华为nova6耳机插上没反应(华为nova6耳机插哪)

  • 路由器接口不够用怎么办(路由器接口不够用,怎么添加交换机)

    路由器接口不够用怎么办(路由器接口不够用,怎么添加交换机)

  • 饿了么风控取消订单是什么意思(饿了么风控取消订单是商家的原因吗)

    饿了么风控取消订单是什么意思(饿了么风控取消订单是商家的原因吗)

  • 微信申诉找回密码要多久(微信申诉找回密码失败怎么回事)

    微信申诉找回密码要多久(微信申诉找回密码失败怎么回事)

  • ibm电脑是什么(ibm电脑是什么档次)

    ibm电脑是什么(ibm电脑是什么档次)

  • win7电脑设置在哪里找(电脑win7设置在哪里)

    win7电脑设置在哪里找(电脑win7设置在哪里)

  • 荣耀20青春版有耳机孔吗(荣耀20青春版有红外遥控吗)

    荣耀20青春版有耳机孔吗(荣耀20青春版有红外遥控吗)

  • word文档内容无法复制(word文档内容无法修改)

    word文档内容无法复制(word文档内容无法修改)

  • 华为mate30音量键在哪里(华为mate30音量键在哪)

    华为mate30音量键在哪里(华为mate30音量键在哪)

  • 如何通过抖音号查找微信(如何通过抖音号找到这个人)

    如何通过抖音号查找微信(如何通过抖音号找到这个人)

  • 苹果xs自带无线耳机吗(iphonexs的无线充电怎么用)

    苹果xs自带无线耳机吗(iphonexs的无线充电怎么用)

  • 十六进制0x什么意思(十六进制0x什么时候用)

    十六进制0x什么意思(十六进制0x什么时候用)

  • 快手特别关心在哪里设置(快手特别关心在哪里打开)

    快手特别关心在哪里设置(快手特别关心在哪里打开)

  • iphonex怎么分屏(iphonex怎么分屏用两个程序)

    iphonex怎么分屏(iphonex怎么分屏用两个程序)

  • 闲鱼Family是什么(闲鱼isnb)

    闲鱼Family是什么(闲鱼isnb)

  • 免费wifi钥匙在哪看密码呢(免费的wlan钥匙)

    免费wifi钥匙在哪看密码呢(免费的wlan钥匙)

  • win10系统下h3c路由器默认密码是什么如何恢复(h3c路由配置教程)

    win10系统下h3c路由器默认密码是什么如何恢复(h3c路由配置教程)

  • 计提印花税会计凭证怎么做
  • 待解预算收入税务局退税如何做账
  • 税收缴款书现在还有吗
  • 劳务派遣差额发票0税率情况
  • 市政道路工程建筑包括什么
  • 政府奖励企业如何申请
  • 企业对公账户转法人私户
  • 企业的日常经营活动主要包括哪三个经营过程
  • 应收账款多几分钱怎么处理
  • 年底员工借款如何处理
  • 企业财务会计制度范本
  • 材料存货的期末计量有何特点
  • 新会计准则最大变化
  • 异地作业人员的个税必须在收入地交吗?
  • 福利费不交个人所得税会怎么样
  • 地税服务业发票税率多少
  • 跨年度发票退回如何记账
  • 培训费发票可以抵扣进项税吗
  • 打印机的增值税率
  • 税控系统技术维护费
  • 为什么销售人员佣金计入合同取得成本
  • 关于税前扣除的规定
  • 不是房屋产权人可以卖房吗
  • 小微企业的特点及经营模式举例
  • 核算错误和重分类错误
  • 现金收付业务流程图
  • 为什么我的win10
  • 农产品抵扣进项税额转出
  • deepin linux安装教程
  • 保证金结息的会计分录
  • 货款已预付会计分录
  • 代理 linux
  • 营业税改增值税的过程
  • 年末结转利润分配账户的借方余额表示
  • 固定资产清理如何结转
  • phpstrcmp函数
  • latex希腊字母斜体
  • 复现开源论文代码总结
  • vue父子组件传值
  • 委托开发软件的版权归委托人所有
  • 公司名下的车怎么交税
  • 工会收取的工会经费应缴纳增值税
  • 百度怎么自动下载视频
  • python导入模块的语句
  • 对外捐赠固定资产会影响利润总额吗
  • 厂房改造费用算固定资产吗
  • 预收和预付科目一样吗
  • 什么叫做有限循环小数
  • 弥补以前年度亏损报表怎么填
  • 金税盘未响应什么意思
  • 电商企业银行账户是什么
  • 股东股权转让后还能起诉公司或者股东侵害其权利吗
  • 配件盘点出现盘盈盘亏后如何处理
  • 组织机构代码证和统一社会信用代码的关系
  • 银行付款手续费发票如何入账
  • 一般户和基本户怎么使用最好
  • mysql order by 性能
  • sqlserver如何保留两位小数
  • centos rpm包存放位置
  • mysql5.7最新版
  • ubuntu火狐浏览器怎么改成中文
  • centos账号密码
  • freebsd的软件管理工具ports详解
  • mac怎么获取文件路径快捷键
  • m0b0player播放器
  • linux下scp远程拷贝包含空格的目录或者文件的解决方法
  • win10专业版系统安装教程
  • linux常用命令cat
  • win10 cpu使用率高怎么办
  • JS实现的base64加密解密完整实例
  • ExtJS PropertyGrid中使用Combobox选择值问题
  • 剑指offter
  • 批处理的扩展名
  • shell脚本获取本地ip
  • 仿淘宝源码
  • 如何搭建python项目架构
  • 河北税务总局发票怎么开
  • 天河地税局局长简介
  • 非税收入发票盖什么章
  • 强化管理定义
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设