使用setTimeout()调用Redux操作

时间:2018-04-03 08:47:05

标签: reactjs redux

对于需要刷新以设置间隔呈现给用户的Redux状态树部分的React应用程序,仅使用setTimeout()来触发Redux操作创建器(例如在ComponentDidMount()生命周期方法内部是否有任何缺点并从端点获取json,而不是使用适当的轮询框架,如Meteor。

我能想到的一个用例是刷新用户收件箱以获取新邮件。

2 个答案:

答案 0 :(得分:1)

通常建议将异步内容移至redux-middleware:

  • 使您的组件成为"只是"视图层。
  • 这也使您的组件更清洁"并且更容易测试。
  • 您可以避免偶然引入内存泄漏等错误。例如:
  • 如果Promise在setState函数中有then,则无法保证在Promise结算时仍会挂载组件。
  • setTimeoutsetInterval相同 - 当组件卸载并做出反应时,有人可能忘记取消订阅它们。
  • 人们经常会对如何正确使用反应生命周期感到困惑(这就是为什么反应被弃用componentWillMountcomponentWillUpdatecomponentWillReceiveProps)。
  • redux-sagaredux-observable这样的库使这样的异步任务很容易实现。

然而......如果你的情况非常简单,那么通过中间件移动代码可能会增加不必要的复杂性。因此,最终,最好做一些将来更容易理解和处理的事情。

答案 1 :(得分:0)

我建议你使用像redux-saga这样的库并使用generator es6(yield)