Redux-Saga ES6类语法方法在调度操作时不会被调用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redux-Saga ES6类语法方法在调度操作时不会被调用相关的知识,希望对你有一定的参考价值。
使用redux saga已经实现了类中的所有方法,因为下面的静态方法是代码。
当调度动作FETCH_POST时,也会注册rootSaga静态方法,它永远不会执行fetchAuthorSaga,因此调用web api永远不会发生,而是转到reducer,其中检查时的类型显示FETCH_POST没有数据。我在这里失踪了什么?
答案
() => SagaAuthor.fetchAuthorSaga
是一个“noop”。您正在传递一个返回生成器的函数,但它必须是一个生成器本身。
它应该是takeEvery('FETCH_POST', SagaAuthor.fetchAuthorSaga)
takeEvery(pattern, saga, ...args)
...saga: Function
- 发电机功能
你需要在rootSaga
中做以下事情
yield all([
call(SagaAuthor.onBootstrap) // should be effect
])
此外,“已经将类中的所有方法都实现为静态方法”这种方法没有多大意义。为什么你需要一个没有实例的类?只需使用object literal或模块本身。
以上是关于Redux-Saga ES6类语法方法在调度操作时不会被调用的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Jest在ES6类方法中测试对redux存储的调度?
如何让 ES6 生成器等待承诺,就像在 redux-saga 中一样?