redux-saga中的分批操作

问题描述 投票:0回答:1

我在https://react-redux.js.org/api/batch处读到,可以使用batch以确保在React之外分派的多个动作只会导致一次渲染更新”,像这样(我在React事件处理程序中使用,即) :

...
const submitData = event => {
    // ... some code before
    batch(() => {
        dispatch(first())
        dispatch(second())
    })
}
...

但是我的问题是如何在batch中正确地执行redux-saga动作,以便在从传奇中分派多个动作时,结果是一次重新渲染而不是多个?我试图将多个put放入all数组中,但不确定它是否实际批处理了put

yield all([
    put(addFirst({first: 1})),
    put(addAnother({second: 2)),
]);

上面的方法是因为我在https://github.com/manaflair/redux-batch处阅读了文档,作者在其中写了“ 由于此软件包已编写,redux-saga得到了改进,并使用all([put(...),put(。 。)])似乎已将两个操作正确地批处理为一个订阅事件,从而使redux-batch在这种情况下变得多余。“,[[0]中的[[but]另一个人写道,批处理由[ C0]。 https://github.com/manaflair/redux-batch/issues/21(我使用的)仍然有一个示例,其中React unstable_batchedUpdates API作为redux-toolkitredux-batch)。

因此,如果有人知道正确的方法,请分享您的知识!最好的问候
reactjs redux redux-saga batching
1个回答
0
投票
正如我刚才在https://github.com/reduxjs/redux-toolkit/blob/master/docs/api/configureStore.md问题中评论的那样:

React-Redux本身中的A Comparison of Redux Batching Techniques用法仅尝试最小化单个调度中的嵌套重渲染。这与该项目的目标没有重叠,该项目试图允许一次调度多个操作,而仅一次通知商店订户。

根据您最初的问题,由于需要redux-batch,因此我不确定您是否可以在sagas中正确使用React-Redux的unstable_batchedUpdates() API。batch()API(仅是React自己的yield put() API,已重新导出)依赖于跟踪在单个事件循环滴答中排队的任何React状态更新,我怀疑使用生成器可能对此无效。我肯定要看一些实际的例子。

无论如何,根据博客文章,有几种批处理选项,它们以不同的方式起作用。这都是您要解决的实际用例的问题。
© www.soinside.com 2019 - 2024. All rights reserved.