【问题标题】:Redux-Saga ES6 class syntax methods do not get called on dispatch of actionRedux-Saga ES6 类语法方法不会在动作调度时被调用
【发布时间】:2018-05-24 05:23:21
【问题描述】:

使用 redux saga 已将类中的所有方法实现为静态方法 下面是代码。

在调度操作 FETCH_POST 时也注册 rootSaga 静态方法,它从不执行 fetchAuthorSaga,因此对 web api 的调用永远不会发生,而是转到减速器,当检查类型时显示 FETCH_POST 没有数据。我在这里错过了什么?

【问题讨论】:

    标签: redux generator redux-saga es6-class


    【解决方案1】:

    () => SagaAuthor.fetchAuthorSaga 是一个“noop”。您正在传递一个返回生成器的函数,但它本身必须是生成器。

    应该是takeEvery('FETCH_POST', SagaAuthor.fetchAuthorSaga)

    Docs

    takeEvery(pattern, saga, ...args) ... saga: Function - 生成器 功能

    而你需要在rootSaga中做如下操作

    yield all([
       call(SagaAuthor.onBootstrap) // should be effect 
    ])
    

    此外,“已将类中的所有方法实现为静态方法”这种方法没有多大意义。为什么你需要一个没有实例的类?只需使用对象字面量或模块本身。

    【讨论】:

    • 当我更改为上述代码 [ts] 类型“FETCH_POST”的参数不可分配给类型“Channel”的参数时出现此错误。
    • @user581157 我对打字稿不太流利。特别是在发电机等方面。
    • @user581157 这可能会有所帮助github.com/redux-saga/redux-saga/issues/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 2021-12-09
    相关资源
    最近更新 更多