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

  • 小米手机无法连接wifi(小米手机无法连接到相机是怎么回事)

    小米手机无法连接wifi(小米手机无法连接到相机是怎么回事)

  • 微信为什么别人不能给我转账(微信为什么别人打视频来老是没显示)

    微信为什么别人不能给我转账(微信为什么别人打视频来老是没显示)

  • excel如何把图表放到指定单元格(excel如何把图表嵌入指定单元格)

    excel如何把图表放到指定单元格(excel如何把图表嵌入指定单元格)

  • 快手账号别人搜索不到(快手搜索别人快手号搜不到是什么情况)

    快手账号别人搜索不到(快手搜索别人快手号搜不到是什么情况)

  • 快手小店的保证金是一年一交吗(快手小店的保证金能不能退)

    快手小店的保证金是一年一交吗(快手小店的保证金能不能退)

  • 华为手机摄像头玻璃碎了怎么办(华为手机摄像头玻璃碎了换要多少钱)

    华为手机摄像头玻璃碎了怎么办(华为手机摄像头玻璃碎了换要多少钱)

  • 小米手环4一直显示蓝牙标志(小米手环4一直连接不上怎么办)

    小米手环4一直显示蓝牙标志(小米手环4一直连接不上怎么办)

  • 小度视频通话没声音

    小度视频通话没声音

  • ipad第7代上市时间(ipad7代上市时间及价格)

    ipad第7代上市时间(ipad7代上市时间及价格)

  • 苹果手机音响有杂音(苹果手机音响有杂音怎么办)

    苹果手机音响有杂音(苹果手机音响有杂音怎么办)

  • 苹果11怎么设置个人热点(苹果11怎么设置来电闪光灯)

    苹果11怎么设置个人热点(苹果11怎么设置来电闪光灯)

  • 手机qq隐藏会话是什么意思(手机qq隐藏会话电脑能看到吗)

    手机qq隐藏会话是什么意思(手机qq隐藏会话电脑能看到吗)

  • ip地址一般分为几类

    ip地址一般分为几类

  • 微信不登录还会有步数吗(微信不登录还会计步吗)

    微信不登录还会有步数吗(微信不登录还会计步吗)

  • 钉钉查看请假记录(钉钉查看请假记录怎么查)

    钉钉查看请假记录(钉钉查看请假记录怎么查)

  • 苹果xr怎么隐藏单个app(苹果XR怎么隐藏下面的一横)

    苹果xr怎么隐藏单个app(苹果XR怎么隐藏下面的一横)

  • 手机屏坏了怎么把东西导出来(手机屏坏了怎么把照片导入新手机)

    手机屏坏了怎么把东西导出来(手机屏坏了怎么把照片导入新手机)

  • 手机热点资讯是哪个软件上的(手机热点资讯是哪个软件的)

    手机热点资讯是哪个软件上的(手机热点资讯是哪个软件的)

  • 苹果充值限额怎么取消(苹果充值限额怎么解除限制)

    苹果充值限额怎么取消(苹果充值限额怎么解除限制)

  • 忘记ld和密码怎么找回(忘记ld密码怎么弄)

    忘记ld和密码怎么找回(忘记ld密码怎么弄)

  • LangChain Agent 执行过程解析 OpenAI

    LangChain Agent 执行过程解析 OpenAI

  • Diffusion models代码实战:从零搭建自己的扩散模型

    Diffusion models代码实战:从零搭建自己的扩散模型

  • Python如何进行线程切换(python绘制一条直线)

    Python如何进行线程切换(python绘制一条直线)

  • 员工工伤住院伙食补助标准是多少
  • 一般纳税人建筑材料税率是多少
  • 纳税申报的流程如何?面试怎么说
  • 个人注册公司有什么优惠政策
  • 加班餐费有发票怎么入账
  • 个人所得税减除费用6万元什么意思
  • 管理费用劳保费属于
  • 季报现金流量表是必报表吗
  • 上市公司现金流充足说明什么
  • 房地产开发商转型
  • 蔬菜营销方案案例范文
  • 国家税务金税四期
  • 为什么纳税人不是负税人
  • 同一控制下合并日后合并报表的编制
  • 自制半成品生产成本
  • 一般纳税人错开免税发票如何申报
  • 委托贷款利息收入怎么开发票
  • 苹果电脑安装了windows能取消吗
  • 年初未分配利润计算公式
  • 稳定用工社保补贴和岗位补贴多久发下来
  • 自查以前年度补税需调帐吗
  • 固定资产清理应交税费怎么算
  • 什么是CMOS什么是BIOS
  • win7 excel
  • 期初银行余额有误怎么调分录怎么写
  • 收到融资款如何做账
  • PHP:mb_strrchr()的用法_mbstring函数
  • 核定征收的企业怎么交所得税
  • uniapp自定义下拉刷新上拉加载
  • netsurf.exe - netsurf是什么进程 有什么用
  • 外商投资工业企业有哪些
  • 预付货款账务处理会计分录
  • css盒子如何居中
  • 会计科目结构什么意思
  • php截取指定字符串
  • ue4ui界面制作
  • 小规模纳税人按简易计税法计税时也可以进行税额的抵扣
  • 小规模纳税人减按1%账务处理
  • c语言strncat函数用法
  • 返回个人所得税的分录
  • mongodb win7
  • 日常费用明细表格式
  • 年终奖的个税税率
  • sql server 2016 always on
  • 一般纳税人未申报可以开票吗
  • 小规模纳税人指的是谁
  • 高铁票可以抵扣的进项
  • 库存现金怎么做预算会计
  • 房租预付款会计分录
  • 基建账是否为可不并入大账
  • 员工工资怎么计提
  • 利息收入如何开票
  • 保证合同的要件
  • 生产成本和主营业务成本金额一样吗
  • 动态sql语句
  • centos7rpm安装命令
  • 猎豹如何添加兼容性站点
  • xp系统无法启动怎么办
  • 数据中心为什么要建在山洞里
  • solaris如何关闭usb接口
  • window8怎么样
  • linux vs windows
  • linux命令文件移动
  • linux指令系统
  • win7系统怎么创建虚拟网络
  • windows 8.1有哪些版本
  • cocos2d怎么用
  • Python分析学校四六级过关情况
  • python爬虫模拟登录亚马逊
  • Python快速从注释生成文档的方法
  • js获取上传文件的大小
  • json数据格式的理解
  • js继承的方式
  • python 查找中文
  • jQuery UI Bootstrap是什么?
  • jquery 获取html
  • 安卓万能插件
  • 广西电子税务局登陆入口
  • 划拨土地评估价
  • 江西国税电子税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设