因此,在简单的反应中,setState会触发render方法。现在,关于Redux,让我们说我发起了一个动作,从reducer返回的状态是全新的,所以它听起来像每个组件都应该更新,但我知道这不是真的,因为当我调试我的应用程序时,我可以看到它,再加上它听起来像可怕的表现。所以我的问题是,redux是否会在每个组件中查看它需要的状态片?在mapStateToProps?一般Redux如何决定何时调用渲染方法?Redux中的组件更新
我知道终极版中有优化...谢谢...
因此,在简单的反应中,setState会触发render方法。现在,关于Redux,让我们说我发起了一个动作,从reducer返回的状态是全新的,所以它听起来像每个组件都应该更新,但我知道这不是真的,因为当我调试我的应用程序时,我可以看到它,再加上它听起来像可怕的表现。所以我的问题是,redux是否会在每个组件中查看它需要的状态片?在mapStateToProps?一般Redux如何决定何时调用渲染方法?Redux中的组件更新
我知道终极版中有优化...谢谢...
一个终极版商店提供subscribe()
方法。当您使用connect()
时,它会生成包装组件,这些组件在创建时会自动订阅商店。每个连接的组件都是独立的用户。
当调度操作时,商店运行所有订阅回调。包装组件然后调用store.getState()
。作为第一次检查,如果根状态对象是===
与前一个相同,则该组件将在此停止。 (这是减速机状态直接变化不好的原因之一)
下一步是调用提供的mapState
函数并传入当前状态对象。包装器组件然后使用浅的相等比较检查比较从mapState
返回的对象的内容与返回的对象的最后时间的内容。如果任何内容已根据浅表检查更改,则该组件知道需要使用新数据重新呈现“真实”组件。 (再次,“浅”检查是突变不好的另一个原因。)
很好的答案,你可能想指出'redux'和'react-redux'是2个独立的模块。 :) –
“全新”并不意味着完整的深层复制。除非你正在改变状态树的每个节点。 –