为什么在React Redux中,setTimeout对异步动作创建者不起作用?
Why doesn't setTimeout work for async action creators in React Redux?
我从这里学习react redux,但不理解这部分:
var asyncSayActionCreator_0 = function (message) {
setTimeout(function () {
return {
type: 'SAY',
message
}
}, 2000)
}
但是我们的动作创建器不会返回一个动作,它会返回"定义"。所以这不是我们要找的解。
为什么这个不行?我认为setTimeout返回超时的ID,而不是未定义的
代码不能工作的原因有两个:
-
因为这个函数没有返回函数(看起来像一个错字)
-
即使它返回一个
number
,它也不是一个动作(一个对象),你还需要一个对"dispatch"函数的引用来将动作发送到store。在后面的教程中,他们展示了如何调用:https://github.com/happypoulp/redux-tutorial/blob/master/09_middleware.js#L61 (redux期望动作始终是一个对象,如果它是一个函数,redux-thunk执行动作)。
通过使用中间件,你可以生成所谓的"效果"。这种影响是应用程序状态的外部影响。在函数式编程中,这被称为"非纯"函数。
作为旁注,这个教程看起来不是很好。我推荐一些类似本教程的内容:https://egghead.io/courses/getting-started-with-redux
相关文章:
- esri javascript异步打印
- JavaScript异步问题
- $translateProvider.useStaticFilesLoader的Angular Translate异步定
- 异步facebook功能
- 异步并行错误
- 在Redux中,我应该在哪里编写复杂的异步流
- 角度异步http自动完成
- 如何从SeleniumWebdriver获取异步Javascript响应
- 如何使用异步调用更改工厂的变量
- 在等待异步任务时永久循环
- 如何在异步函数中使用javascript对象
- 调用后不异步Ajax忽略函数
- learnyounode#9杂耍异步
- 异步获取数据使用JavaScript同步获取数据
- Meteor:异步回调问题
- 如何以异步方式打印q中的项目
- javascript函数中的异步与同步.(Node.js)
- Fresh Spark Install+Homestead上的Vue异步堆栈跟踪错误
- 在redux中使用thunk中间件比使用常规函数作为异步操作创建者有什么好处
- 为什么在React Redux中,setTimeout对异步动作创建者不起作用?