【发布时间】:2018-06-08 07:37:31
【问题描述】:
当我 dispatch Redux 中的一个操作时,商店会按顺序更新,即如果我有以下 thunk:
function action(data) {
return function(dispatch) {
dispatch(anotherAction(data));
dispatch(anotherActionAfterTheAboveUpdatesTheStore(data));
};
}
store是按顺序更新的,也就是说dispatch(anotherAction(data));之后store已经改变了。
但是,我知道当我们在内部调度一个动作时,react-redux 通过其异步的setState 方法重新渲染一个连接的组件。因此,我在理解 React 何时使用新数据有效地重新渲染组件时遇到了一些困难。
它是否保证在每个 Redux 的 dispatch 之后调用 render()?
感谢您的关注。
【问题讨论】:
-
组件,如果定义为一个函数,每次状态更新都会被调用一次或多次。无论新状态与原始 afaik 相同还是不同,都会发生这种情况。要查看每个调用,您可以在组件返回之前放置 console.log 语句并查看它发生了多少次。将组件定义为类,除非您通过 shouldComponentUpdate 控制更新,否则它是相同的。
-
这个想法是组件必须在每次状态更新时返回。然后由协调者决定是否需要更新 DOM。
-
“它是否保证在每次 Redux 调度后调用 render()?”你可以简单地通过将
console.log添加到render方法来测试它。我会说这是真的,因为在事件处理程序中反应批处理setState调用。但无论现在如何工作,这都是将来可能会改变的实现细节。我不建议无论如何依赖这种行为。
标签: javascript reactjs redux redux-thunk