因此,在简单的反应中,setState触发render方法。现在,关于Redux,让我说我发动一个动作,从reducer返回的状态是全新的,所以听起来每个组件都应该更新,虽然我知道这不是真的,因为当我调试我的应用程序时我可以看到它,加上它听起来像糟糕的表现。所以我的问题是,redux是否在每个组件中查看它需要哪个状态切片?在mapStateToProps?一般来说Redux如何决定何时调用render方法?
我知道Redux在其中有优化......谢谢......
答案 0 :(得分:1)
Redux商店提供subscribe()
方法。使用connect()
时,它会生成包装器组件,这些组件在创建时会自动订阅商店。每个连接的组件都是一个单独的用户。
调度操作时,商店会运行所有订阅回调。然后包装器组件调用store.getState()
。作为第一次检查,如果根状态对象与前一个对象===
相同,则组件将停在那里。 (这是减速器中状态直接变化不好的一个原因。)
下一步是调用提供的mapState
函数并传入当前状态对象。然后,包装器组件使用浅等式比较检查将从mapState
返回的对象的内容与返回 last 时间的对象的内容进行比较。如果任何内容基于浅层检查更改,则组件知道它需要重新呈现"真实"具有新数据的组件。 (同样,"浅"检查是突变不好的另一个原因。)