我如何/在哪里可以定期发送操作?使用递归 setTimeout
进行倒计时。
取自示例,类似于此:
// Can also be async if you return a function
export function incrementAsync() {
return dispatch => {
(function _r() {
setTimeout(() => {
// Yay! Can invoke sync or async actions with `dispatch`
dispatch(increment());
_r();
}, 1000);
})();
};
}
那么这是一个好主意,还是有更好的方法来解决这个问题,比如使用中间件或从其他地方创建操作?
我更喜欢这个的通用版本,我可以在其中通过商店控制计时器的启动/停止。
我已经设置了一个示例实现,请查看 https://gist.github.com/eguneys/7023a114558b92fdd25e
最佳答案
您建议的方法很好,尽管有点令人费解。通常,我会在组件生命周期方法(例如 componentDidMount
/componentWillUnmount
)中设置间隔,并避免在其他操作上设置间隔。
如果您绝对需要这种灵 active ,更好的选择是使用 Rx用于异步管理,并在可观察链的最末端dispatch
操作。通过这种方式,您可以在 Redux 擅长的地方(同步更新)使用它,而将异步组合留给 Rx。
关于javascript - 如何在 redux 中使用 setTimeout 和调度程序触发周期性操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31545982/