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

  • 网易云一起听退了还能进吗(网易云一起听退出后再连接时间会继续吗)

    网易云一起听退了还能进吗(网易云一起听退出后再连接时间会继续吗)

  • 支付宝查询社保缴费记录怎么查(支付宝查询社保显示未查询到个人编号信息)

    支付宝查询社保缴费记录怎么查(支付宝查询社保显示未查询到个人编号信息)

  • airpods进水声音变小了(airpods进水声音很小)

    airpods进水声音变小了(airpods进水声音很小)

  • 无线装置关闭怎么解开(无线装置关闭怎么开启手机)

    无线装置关闭怎么解开(无线装置关闭怎么开启手机)

  • 微信群100人如何抽奖(超100人的微信群进群办法)

    微信群100人如何抽奖(超100人的微信群进群办法)

  • 为什么华为手机的激活时间对不上(为什么华为手机充不进去电)

    为什么华为手机的激活时间对不上(为什么华为手机充不进去电)

  • 快手有关回是什么意思(快手上的回关什么意思)

    快手有关回是什么意思(快手上的回关什么意思)

  • 抖音关注请求拒绝了有提示吗(抖音关注请求拒绝了在哪里查找)

    抖音关注请求拒绝了有提示吗(抖音关注请求拒绝了在哪里查找)

  • g502hero和g502主宰者区别(g502hero和g502hero主宰者区别)

    g502hero和g502主宰者区别(g502hero和g502hero主宰者区别)

  • oppofindx摄像头升降卡住(oppofindx摄像头升降坏了怎么修理)

    oppofindx摄像头升降卡住(oppofindx摄像头升降坏了怎么修理)

  • 英伟达显卡驱动有必要更新吗(英伟达显卡驱动安装)

    英伟达显卡驱动有必要更新吗(英伟达显卡驱动安装)

  • 手机卡转网有什么影响(手机卡转网有什么要求)

    手机卡转网有什么影响(手机卡转网有什么要求)

  • ipad pro 9.7是第几代(ipad pro 9.7属于第几代)

    ipad pro 9.7是第几代(ipad pro 9.7属于第几代)

  • 解绑设备是什么意思(设备已解绑)

    解绑设备是什么意思(设备已解绑)

  • iphone11耳机是无线的吗(苹果11的耳机是无线的吗)

    iphone11耳机是无线的吗(苹果11的耳机是无线的吗)

  • 云闪付二维码可以用微信扫吗(云闪付二维码可以收信用卡吗)

    云闪付二维码可以用微信扫吗(云闪付二维码可以收信用卡吗)

  • 电池健康度多少正常(怎么查看ipad电池健康度多少)

    电池健康度多少正常(怎么查看ipad电池健康度多少)

  • 微信视频有杂音是怎么回事(为什么打微信视频有杂音)

    微信视频有杂音是怎么回事(为什么打微信视频有杂音)

  • 不属于对话框的组成元素是(不属于对话框的元素是)

    不属于对话框的组成元素是(不属于对话框的元素是)

  • 小米9充电特效怎么设置(小米充电特效怎么设置一直显示)

    小米9充电特效怎么设置(小米充电特效怎么设置一直显示)

  • 管理局域网网速如何控制呀?(局域网网速太慢怎么办)

    管理局域网网速如何控制呀?(局域网网速太慢怎么办)

  • vim-cmd命令  控制虚拟机状态(vim操作命令)

    vim-cmd命令 控制虚拟机状态(vim操作命令)

  • 基于Vue开发的门户网站展示和后台数据管理系统(vue开发教程)

    基于Vue开发的门户网站展示和后台数据管理系统(vue开发教程)

  • 个税申报的收入扣除社保吗
  • 认证一般纳税人之前取得的专票
  • 报销用的发票抬头写什么
  • 工厂开不了发票
  • 商贸企业增加值
  • 防伪税控系统服务费发票在哪里开
  • 房地产企业对外投资案例
  • 会计核算制度的案例
  • 个体工商户需要每个月报税吗
  • 买一手房需要交哪些税费
  • 发票未到的库存商品如何做账
  • 简易计税项目是所有发票都是普票吗
  • 集体土地上的不动产能符合异议28条规定吗
  • etc发票犯法吗
  • 应收账款增加记哪一方
  • 人力成本包括哪三个方面
  • 若依框架入门
  • Win11 Build 22000.132 预览版 ISO 官方镜像下载与安装
  • 支付设备维修费用计入什么科目
  • 公司取得的发明专利
  • linux操作系统为用户提供的接口为
  • 深度学习模型精度fp16和fp32
  • 代理进口的增值税如何入账
  • 同一控制下的企业合并,合并方在企业合并中取得的资产
  • php 实例
  • 计提折旧和计提减值
  • 笔记本屏幕坏点几个算正常
  • pkjobs.exe - pkjobs是什么进程 有什么用
  • 马尼亚岛的降水特点
  • 溢缴退费是什么意思
  • 如何用php制作表格
  • php中面向对象
  • php 替换
  • 动态设置窗体记录源属性
  • 小米开发回稳定
  • python的图
  • php如何解析json串内的数组
  • 资产负债表中应交税费为负数是什么意思
  • 采购发票生成的会计凭证
  • mysql的文件格式有哪些
  • 怎样增加资产负债率
  • sql2016异地备份
  • 承兑能随便给别人看吗
  • 服务不动产和无形资产本期数,第19栏
  • 未开票的收入如何申报增值税
  • 现金日记账采用哪一种账簿的形式
  • 收到开错的发票怎么办
  • 劳务费无发票怎么处理
  • 房地产增值税发票是什么意思
  • 没签劳动合同的后果
  • 季节性移动的原因
  • 小规模30万含专票吗
  • 增值税专用发票和普通发票的区别
  • 工资的税额
  • 行政事业单位基本户核算内容
  • freebsd怎么样
  • 苹果系统装win8
  • ubuntu20.4 ssh
  • 电脑系统怎么设置字体大小
  • win10官方要钱吗
  • centos7 修复
  • 怎么优化win10系统
  • win7虚拟内存最大设置多少
  • 使用 WinSCP 管理 Linux VPS/服务器上的文件 图文教程
  • linux修改22端口号
  • 用360可以装win7系统吗
  • linux装完显卡驱动分辨率低
  • macos unity
  • jQuery Validate 数组 全部验证问题
  • linux shell 中 2>&1的含义
  • css中清除浮动的目的有哪些
  • 'tools.jar' seems to be not in Android Studio classpath. Please ensure JAVA_HOME points to JDK rathe
  • jquery 延迟对象
  • python urllib urlopen
  • unity ulua
  • javascirpt
  • 开发票收多少税点?
  • 美国有汽车吗
  • 17%增值税什么时候开始
  • 公司投资款可否取回
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设