如何将多个传奇添加到单个容器(两个传奇听不同的动作)

How to add multiple sagas to a single container (both saga listen to different actions)

所以,我是 react-boilerplate 的新手,似乎没有办法在不影响前一个传奇的功能的情况下包含另一个传奇(即它不起作用)。

我试过将 sagas 声明为常量,然后将其传递到容器末尾的 compose 函数中,但在检查 utils/injectsaga.js 时给出了对象不是函数的错误,它不是一个函数。所以这对我不起作用。我试过如下直接注入 sagas。

注入多个 reducer 效果很好,我想在添加新的 saga 时之前的 saga 会被覆盖吗?请建议我一个更好的方法来解决这个问题。

import sreducer from './reducer';

import ereducer from '../FooCreate/reducer'

import ssaga from './saga';

import esaga from '../FooCreate/saga'


useInjectReducer({ key: 'foo', reducer:sreducer });

useInjectReducer({ key: 'foo', reducer:ereducer });

useInjectSaga({ key: 'foo', saga:ssaga });

useInjectSaga({ key: 'foo', saga:esaga });

我相信您需要创建一个类似于 rootSaga[1] 的单一传奇来处理启动子传奇。类似于:

function* componentSaga() {
  // start the two sagas right away - use a different pattern here depending on
  // how your sagas are structured
  yield all([
    ssaga(),
    esaga(),
  ]);
}

useInjectSaga({key: 'foo', saga: componentSaga});

如果您的 sagas 需要立即开始或

function* componentSaga() {
  yield takeEvery(FOO_ACTION, ssaga);
  yield takeEvery(BAR_ACTION, esaga);
}

useInjectSaga({key: 'foo', saga: componentSaga});

如果您希望它们由操作触发。

[1] https://redux-saga.js.org/docs/advanced/RootSaga.html