Javascript 如何在redux中使用setTimeout和dispatcher触发定期操作
我如何/在哪里可以定期发送操作?使用递归Javascript 如何在redux中使用setTimeout和dispatcher触发定期操作,javascript,reactjs,flux,redux,Javascript,Reactjs,Flux,Redux,我如何/在哪里可以定期发送操作?使用递归setTimeout进行倒计时 从示例中可以看出,类似于以下内容: // Can also be async if you return a function export function incrementAsync() { return dispatch => { (function _r() { setTimeout(() => { // Yay! Can invoke sync or async
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);
})();
};
}
那么这是一个好主意,还是有更好的方法解决这个问题,比如使用中间件或从其他地方创建操作
我更喜欢这个通用版本,我可以通过商店控制定时器的启动/停止
我已经设置了一个示例实现,请看一看您建议的方法,虽然有点复杂,但很好。通常,我会在组件生命周期方法中设置间隔(例如,
componentDidMount
/componentWillUnmount
),并避免在其他操作上设置间隔
如果您确实需要这种灵活性,那么更好的选择是使用异步管理,并在可观察链的最末端执行dispatch
操作。通过这种方式,您可以在需要的地方使用Redux(同步更新),并将异步合成留给Rx。有一个很好的方法可以解决这个问题
Gustavo Machado给出了componentDidMount
/componentWillMount
解决方案和redux
选项中的dispatch
两个示例
它帮助了我,所以你可能想看看 由于这是可行的,我可能不会继续重新创建一个看起来总是一样的函数,而是只定义一次?我真的不明白增量的异步性。请记住,js事件处理不是很精确