【发布时间】:2017-01-11 22:50:41
【问题描述】:
单击按钮时,会进行 API 调用(由 setTimeout 模拟),完成后,该项目会从状态中移除。我希望组件不会尝试渲染,但它会失败,因为它需要的状态不再存在。
The first fiddle 显示所需的行为有效,因为调度调用是同步的:
dispatch({
type: 'REMOVE',
id
});
The second fiddle 显示错误,因为调度调用是异步进行的:
setTimeout(() => {
dispatch({
type: 'REMOVE',
id
});
}, 0);
我假设父组件将不再尝试渲染子组件,因为该项目已从数组中过滤出来。如何从状态中删除项目并防止组件尝试重新渲染?
【问题讨论】:
-
Similar to this issue。升级到 react-redux@next 解决了问题
标签: javascript reactjs asynchronous redux