博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
react dva 的 connect 与 @connect
阅读量:6793 次
发布时间:2019-06-26

本文共 1770 字,大约阅读时间需要 5 分钟。

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

 

connect 的使用

【connect 方法返回的也是一个 React 组件,通常称为容器组件。因为它是原始 UI 组件的容器,即在外面包了一层 State。

connect 方法传入的第一个参数是 mapStateToProps 函数,该函数需要返回一个对象,用于建立 State 到 Props 的映射关系。】

简而言之,connect接收一个函数,返回一个函数。

第一个函数会注入全部的models,你需要返回一个新的对象,挑选该组件所需要的models。

export default connect(({ user, login, global = {}, loading }) => ({    currentUser: user.currentUser,    collapsed: global.collapsed,    fetchingNotices: loading.effects['global/fetchNotices'],    notices: global.notices}))(BasicLayout);// 简化版export default connect(   ({ user, login, global = {}, loading }) => {        return {          currentUser: user.currentUser,          collapsed: global.collapsed,          fetchingNotices: loading.effects['global/fetchNotices'],          notices: global.notices        }  })(BasicLayout);

 

@connect的使用

其实只是connect的装饰器、语法糖罢了。

// 将 model 和 component 串联起来export default connect(({ user, login, global = {}, loading }) => ({    currentUser: user.currentUser,    collapsed: global.collapsed,    fetchingNotices: loading.effects['global/fetchNotices'],    notices: global.notices,    menuData: login.menuData,         // by hzy    redirectData: login.redirectData, // by hzy}))(BasicLayout);

// 改为这样(export 的不再是connect,而是class组件本身。),也是可以执行的,但要注意@connect必须放在export default class前面:// 将 model 和 component 串联起来@connect(({ user, login, global = {}, loading }) => ({  currentUser: user.currentUser,  collapsed: global.collapsed,  fetchingNotices: loading.effects['global/fetchNotices'],  notices: global.notices,  menuData: login.menuData,         // by hzy  redirectData: login.redirectData, // by hzy}))export default class BasicLayout extends React.PureComponent {    // ...}

 

转载于:https://www.cnblogs.com/CyLee/p/9308604.html

你可能感兴趣的文章
Kurento Modules
查看>>
多种控制器的创建方式
查看>>
NSUserDefaults 简介,使用 NSUserDefaults 存储自定义
查看>>
IDEA_15构建SSM登录功能(1)
查看>>
Linux就是这个范儿
查看>>
基于JSTL自定义标签库
查看>>
hibernate里使用JDBC查询示例代码
查看>>
关闭tomcat命令窗体
查看>>
使用hive的常用命令语句
查看>>
Javascript 作用域和变量提升
查看>>
1-junos基本操作
查看>>
Servlet 工作原理解析
查看>>
怎样打造一个DOM元素位置引擎 (一)
查看>>
P1005
查看>>
std 与标准库
查看>>
Redis入门之一简介
查看>>
spring security3.x学习(13)_第三个例子要使用hsql数据库
查看>>
这里是黑房子开发者社区
查看>>
★思维导图的30个问答
查看>>
Xcode 6更新默认不支持armv7s架构
查看>>