# Redux 常见问题:React Redux
# 目录
为何组件没有被重新渲染、或者 mapStateToProps 没有运行?
为何组件频繁的重新渲染?
怎样使 mapStateToProps 执行更快?
为何不在被连接的组件中使用 this.props.dispatch ?
应该只连接到顶层组件吗,或者可以在组件树中连接到不同组件吗?
# React Redux
# 为何组件没有被重新渲染、或者 mapStateToProps 没有运行?
目前来看,导致组件在 action 分发后却没有被重新渲染,最常见的原因是对 state 进行了直接修改。Redux 期望 reducer 以 “不可变的方式” 更新 state,实际使用中则意味着复制数据,然后更新数据副本。如果直接返回同一对象,即使你改变了数据内容,Redux 也会认为没有变化。类似的,React Redux 会在 shouldComponentUpdate
中对新的 props 进行浅层的判等检查,以期提升性能。如果所有的引用都是相同的,则返回 false
从而跳过此次对组件的更新。
需要注意的是,不管何时更新了一个嵌套的值,都必须同时返回上层的任何数据副本给 state 树。如果数据是 state.a.b.c.d
,你想更新 d
,你也必须返回 c
、b
、a
以及 state
的拷贝。 state 树变化图
展示了树的深层变化为何需要改变途经的结点。
+ 
关注公众号,获取验证码 !
验证码: