位置: 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)(阿尔卑斯山环保)

  • 小米手机充电器接口型号(小米手机充电器坏了在保修范围内吗)

    小米手机充电器接口型号(小米手机充电器坏了在保修范围内吗)

  • 微信操作频率过快怎么解除(微信操作频率过快,请稍后重试怎么解决)

    微信操作频率过快怎么解除(微信操作频率过快,请稍后重试怎么解决)

  • 手机怎么连接电视机看电视(手机怎么连接电脑的网络)

    手机怎么连接电视机看电视(手机怎么连接电脑的网络)

  • iphonexr屏幕亮度突然变暗(iphonexr屏幕亮度多少)

    iphonexr屏幕亮度突然变暗(iphonexr屏幕亮度多少)

  • 为什么找不到撤销退款(为什么找不到撤销退货退款申请)

    为什么找不到撤销退款(为什么找不到撤销退货退款申请)

  • 腾讯会议能分屏吗(腾讯会议能分屏吗苹果手机)

    腾讯会议能分屏吗(腾讯会议能分屏吗苹果手机)

  • 360重装大师装的是什么系统(360重装大师装的是什么)

    360重装大师装的是什么系统(360重装大师装的是什么)

  • 苹果8p建议升级13.3系统吗(苹果8p建议升级15.7.1吗)

    苹果8p建议升级13.3系统吗(苹果8p建议升级15.7.1吗)

  • 原彩显示费电吗(原彩显示 耗电吗)

    原彩显示费电吗(原彩显示 耗电吗)

  • 屏幕共享能看到对方脸么(屏幕共享能看到ppt的备注吗)

    屏幕共享能看到对方脸么(屏幕共享能看到ppt的备注吗)

  • 硬盘格式化是什么意思(硬盘格式化什么格式才能兼容苹果电脑)

    硬盘格式化是什么意思(硬盘格式化什么格式才能兼容苹果电脑)

  • ipad6代是什么型号(ipad6代是几代)

    ipad6代是什么型号(ipad6代是几代)

  • 日产智联怎么连接汽车(日产智联怎么连接手机)

    日产智联怎么连接汽车(日产智联怎么连接手机)

  • 手机内屏进水了怎么办(手机内屏进水了可以充电吗)

    手机内屏进水了怎么办(手机内屏进水了可以充电吗)

  • 手机qq提示音怎么改(手机qq提示音怎么自定义)

    手机qq提示音怎么改(手机qq提示音怎么自定义)

  • 手机里kingroot怎么卸载(手机解除kingroot的最简单方法)

    手机里kingroot怎么卸载(手机解除kingroot的最简单方法)

  • 笔记本内存条能装几个(笔记本内存条能装在台式机上吗)

    笔记本内存条能装几个(笔记本内存条能装在台式机上吗)

  • 苹果系统占30g怎么清理(iphone系统占30g解决办法)

    苹果系统占30g怎么清理(iphone系统占30g解决办法)

  • 淘宝拼团可以和陌生人拼吗(淘宝拼团是各自发货吗)

    淘宝拼团可以和陌生人拼吗(淘宝拼团是各自发货吗)

  • 外拨转接是人设置的吗(外拨已转接来电是拉黑的意思吗)

    外拨转接是人设置的吗(外拨已转接来电是拉黑的意思吗)

  • 代驾在哪里找(代驾在哪里找便宜)

    代驾在哪里找(代驾在哪里找便宜)

  • 抖音视频删除怎么恢复(抖音视频删除怎么恢复,找回自己拍抖音删掉)

    抖音视频删除怎么恢复(抖音视频删除怎么恢复,找回自己拍抖音删掉)

  • 隔空投送文件储存在哪(隔空投送文件夹储存在哪)

    隔空投送文件储存在哪(隔空投送文件夹储存在哪)

  • 荣耀v20有没有熄屏显示(荣耀v20可以灭屏显示吗)

    荣耀v20有没有熄屏显示(荣耀v20可以灭屏显示吗)

  • 华为手机克隆可以用在其他手机上吗(华为手机克隆可以卸载吗)

    华为手机克隆可以用在其他手机上吗(华为手机克隆可以卸载吗)

  • 数据和信息的关系(数据和信息的关系可以看成)

    数据和信息的关系(数据和信息的关系可以看成)

  • 棕榈滩的毯子章鱼,佛罗里达州  (© Steven Kovacs/Minden Pictures)(棕榈滩的读音)

    棕榈滩的毯子章鱼,佛罗里达州 (© Steven Kovacs/Minden Pictures)(棕榈滩的读音)

  • phpcms如何添加模板(phpcms插件)

    phpcms如何添加模板(phpcms插件)

  • 如何使用php中codeIgniter框架?(phpipam使用)

    如何使用php中codeIgniter框架?(phpipam使用)

  • 购买土地使用权契税的会计分录
  • 贷款还款利息怎么还
  • 银行结息收入怎么做分录
  • 个体工商户五级税率
  • 建筑业异地预缴税款怎么抵扣
  • 法人转钱进公账要交税吗
  • 健身房开业前买的瑜伽垫怎么做账?
  • 公司宣传牌模板
  • 企业法人个人帐户是什么
  • 2018年高新技术企业所得税
  • 电商刷单的财务操作
  • 小规模纳税人少计提的工资怎么办
  • 工程建造过程中发生的在建工程人员工资180万尚未支付
  • 境外取得收入要不要交企业所得税
  • 收到投资款怎么做记账凭证
  • 残保金和工会经费需要计提吗
  • 开立银行承兑汇票清单怎么盖章
  • 上年度少计提的税金及附加
  • 企业所得税汇算表
  • deepin如何
  • mysql高级语句
  • windows10记事本
  • 野生动物huan
  • 金银首饰零售业税负率是多少
  • 固定资产清理净损失为什么在贷方
  • uniapp下拉菜单
  • php有多简单
  • 3d检测软件
  • 广告费可以结转几年扣除
  • 最近爆火的抖音神曲
  • web用户管理系统报告
  • blat命令
  • 个人所得税经营所得
  • 其他收益所得税汇算清缴时需要调增吗
  • python中如何创建一个对象
  • mongodb 教程
  • phpcms api
  • python中返回结果为true
  • 记账凭证摘要怎么填写
  • 银行日记账跨月登记方法
  • 进口化妆品品牌大全
  • 公司给员工买意外险需要员工出钱吗
  • 合同履约成本如何设置明细科目
  • 购车费用怎么进行账务会计处理
  • 企业缴纳车船税吗
  • 无发票材料可以入材料账吗
  • 业务招待费需附上清单
  • 省外出差
  • 个人原因指什么
  • 专利年费可以减免吗
  • 报表其他非流动资产
  • 银行利息收入的会计分录怎么写
  • 收到红字增值税发票哪里查
  • MySQL中的max()函数使用教程
  • freebsd11.3安装教程
  • win8删除所有文件
  • 2016年最火的歌曲排行前100首
  • 怎么解决xp不能安装软件
  • gcasSWUpdater.exe是什么进程 有什么作用 gcasSWUpdater进程查询
  • linux临时修改编码
  • windows8介绍
  • win10小娜无法启动语音识别
  • 鼠标的指针
  • win8系统怎么设置
  • linux制作
  • linux如何使用vim编写程序
  • Python自然语言处理PDF
  • 英语中our和my的区别
  • javascript总结
  • javascript框架库升级
  • javascript题
  • 安卓判断横竖屏
  • javascript语言入门教程
  • jquery1.11.3
  • 黑龙江税务局副局长
  • 增值税一般纳税人和小规模纳税人的区别
  • 湖北耕地占用税标准
  • 全国大学生数学竞赛证书电子版查询
  • 辽宁省国家税务局官网
  • 地税应急管理办法最新
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设