javascript - 关于对redux的理解,求大神指点迷津。。
PHP中文网
PHP中文网 2017-04-11 11:26:02
[JavaScript讨论组]
function mapStateToProps(state) {
  console.log(state);//打印不出来会报错,为什么?
  const {user, messages} = state;//这个user,message是根据什么来的
  return {user, messages};
}

export default connect(mapStateToProps)(SlotContainer);//这个connect函数是怎么工作的?

connect(mapStateToProps)这里面mapStateToProps没有传参数啊,在connect执行的时候mapStateToProps是怎么工作的

PHP中文网
PHP中文网

认证0级讲师

全部回复(3)
迷茫

这个可以去看看react-redux源码里的connect,挺好理解的,他其实是把mapStateToProps作为参数传递给connect,然后在connect里调用的时候又把state作为参数传给了他

简单贴几段源码

//设置mapState
const mapState = mapStateToProps || defaultMapStateToProps

//调用,调用的时候传了参数
const mappedState = mapState(store.getState(), props)
巴扎黑

打印不出来会报错,为什么?
报的什么错?把报错内容贴出来。connect写法没问题,估计报错是因为没有store?你的组件有没有被<Provider />包裹?

这个user,message是根据什么来的?
这个是ES6的语法,叫做Destructuring

const {user, messages} = state;
// 等同于
const user = state.user;
const messages = state.messages;

这个connect函数时做什么工作的?
connect是react redux的一个方法,使用HOC模型对当前组件进行包裹,用来连接redux store和当前组件的。他会负责从mapStateToProps,mapDispatchToProps拿到的结果 和 父级组件传下来的props 合并,然后传递给当前组件。

mapStateToProps,这里的State指的是Redux里的state。这里的props指的是当前组件获取的props。当初始化的时候和redux的state发生改变的时候,会调用这个方法,更新当前组件的props.

PHP中文网

state这个是redux中store中的值,只要state发生了改变,那么页面就会进行更新。而connect是redux中的方法,就是链接store和你的组件,使之相互通信。这也是精要之处。一旦通信后,reducer中的初始值state就会作为你组件里面的props,这样你就可以进行处理参数了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号