Reactjs 在redux传奇中是否有解耦耦合异步数据的模式?

Reactjs 在redux传奇中是否有解耦耦合异步数据的模式?,reactjs,redux,redux-saga,Reactjs,Redux,Redux Saga,我在一个页面上有两个容器(连接到redux存储)组件(比如a和B),它们都依赖于一个redux传奇来完成它们的数据 目前,我正在做的避免两个异步调用(以及避免一个进行调用并让另一个检查数据是否存在)的工作是将异步调用向上移动到包含a和B的更高容器组件C中 然后我将A和B转换为普通组件(未连接到存储),并将C的道具传递给它们 有没有一种模式可以更好地实现这一点? 或任何迁移路径来实现此转换? 还是最好只做这个更改,然后花时间将异步调用向上移动到C,并将A和B转换为标准组件 有没有一种模式可以更好地

我在一个页面上有两个容器(连接到redux存储)组件(比如a和B),它们都依赖于一个redux传奇来完成它们的数据

目前,我正在做的避免两个异步调用(以及避免一个进行调用并让另一个检查数据是否存在)的工作是将异步调用向上移动到包含a和B的更高容器组件C中

然后我将A和B转换为普通组件(未连接到存储),并将C的道具传递给它们

有没有一种模式可以更好地实现这一点? 或任何迁移路径来实现此转换? 还是最好只做这个更改,然后花时间将异步调用向上移动到C,并将A和B转换为标准组件

有没有一种模式可以更好地实现这一点

将数据准备到多个组件中并处理其操作的最佳实践是使用一个root
redux
-provider,它提供所有操作并存储到下行组件的连接。 然后,
redux saga
可以拦截任何操作并执行API调用,因为它是中间件和流程管理器的组合。通常,组件仅在收到
\u请求
-like动作后,才调度
saga
执行一批异步操作,然后将
\u失败
-like动作的
\u成功
放入减速器。
当然,如果您想支持优化更新,那么在减速机中也应该支持类似于请求的操作

如果组件之间存在显式或隐式链接,那么仅通过
takeEvery
takeLatest
进行简单的操作处理是不够的。但是
saga
只允许创建多个异步进程,这些进程可以在
产生基于
的循环之前在本地闭包中累积状态

function * manyActionsSaga() {
    let flowPromise = Promise.resolve();
    while(true) {
        const action = yield take(['ACTION_1', 'ACTION_2', 'ACTION_3']);
        yield call(() => flowPromise)
        flowPromise = flowPromise.then(() => {
            // Similar event handling
        })
    }
}