gpt4 book ai didi

reactjs - 如何将多个 saga 添加到单个容器(两个 saga 监听不同的操作)

转载 作者:行者123 更新时间:2023-12-03 14:24:37 30 4
gpt4 key购买 nike

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

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

注入(inject)多个 reducer 工作正常,我认为添加新的传奇故事之前的传奇故事会被覆盖吗?请建议我一个更好的方法来解决这个问题。

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});

如果您的传奇需要立即开始或

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

关于reactjs - 如何将多个 saga 添加到单个容器(两个 saga 监听不同的操作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57475538/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com