【问题标题】:What is the right way to separate redux sagas into files?将redux sagas分成文件的正确方法是什么?
【发布时间】:2017-08-14 07:15:08
【问题描述】:

我无法找到可靠的来源。

我正在尝试按以下形式构建我的应用程序:

  • 容器 1
    • container.js
    • reducer.js
    • selectors.js
    • sagas.js
  • 容器 2
    • container.js
    • reducer.js
    • selectors.js
    • sagas.js

并拥有一个根 saga 文件,该文件将导入所有子 saga 并让事情发生。

我的典型 saga 文件如下所示:

/**
 * watch something
 */
function* watchSomething() {
    yield takeLatest(GET_SOMETHING, callGetSomething);
}

export const somethingSagas =  [
    watchSomething
];

export default watchSomething;

还有我的根传奇:

import JolterSagas from '/path/to/container/sagas';

export default function* root() {
    yield all([
        SomethingSagas.map((saga) => fork(saga))
    ]);
};

虽然工作,但我在控制台中得到以下信息:

[...effects] 已弃用,支持 all([...effects]),请更新您的代码

无论我如何更改代码,它要么无法正常工作,要么一直打印此警告。

我无法找到任何最新的可靠文档来说明如何做到这一点,官方文档中的所有示例都很小且单一。

谢谢。

【问题讨论】:

    标签: reactjs redux redux-saga


    【解决方案1】:

    我猜你是从redux-saga 导入takeEverytakeLatest 您必须从redux-saga/effects 导入takeEverytakeLatest

    import { takeEvery, takeLatest, fork } from `redux-saga/effects`
    

    yield all(SomethingSagas.map((saga) => fork(saga)));
    

    而且没有正确的方式来构建你的 saga。这取决于您的项目、您的编码风格。

    【讨论】:

    • 其实没有,我是从特效导入的
    • @superuser123 你删除了函数* root 中的 [ ] 吗?
    • @superuser123 接受这个答案,如果这对你有帮助!谢谢。
    猜你喜欢
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    相关资源
    最近更新 更多