javascript - 如何在 redux 中使用 setTimeout 和调度程序触发周期性操作

标签 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 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/

相关文章:

javascript - 嵌入式浏览器中的JS与原生代码的连接方式是什么?

javascript - 有没有像 "correct"这样的东西用 React hooks 和 Typescript 定义状态?

javascript - Asset.fromModule 不是函数。 (在 'Asset.fromModule(image)' 中, 'Asset.fromModule' 未定义)

javascript - 当有多个带有数据请求的 React.js 组件实例时如何处理缓存?

javascript - 为什么我不能在 Canvas 上画一个正方形?

javascript - 根据单选按钮值显示或隐藏表格行

javascript - 整个表格 onChange

javascript - 不要嵌套三元表达式 - 替代

javascript - 在 ReactJS 中,由于另一个操作发生,我如何/在哪里触发执行异步获取的操作?

javascript - 将 Flux 存储中的 Immutable.js 映射与内部 React 组件状态合并