如何将多个传奇添加到单个容器(两个传奇听不同的动作)
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});
如果您希望它们由操作触发。
所以,我是 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});
如果您希望它们由操作触发。