gpt4 book ai didi

reactjs - reducer 可以监听其他 Action 吗?

转载 作者:行者123 更新时间:2023-12-03 13:44:12 25 4
gpt4 key购买 nike

目前,我正在创建操作,然后创建一个 reducer 来处理我的应用程序的不同部分......不同的域。

我的应用列出了类(class)和学生。

目前,我有一个应用程序已加载的操作,以便我知道何时删除加载微调器,我有针对类(class)和学生的操作。我的问题是,我发现我需要连续执行多个操作,并且不确定这是否是使用 redux 的有效方法。

下面是一个示例函数,它在加载数据后分派(dispatch)多个操作:

/**
* Callback used by readAppData.
*
* @param object ioResult An object: {success: boolean, errorObj?: object, data?: string}
*/
dataLoaded(ioResult: Object) {
if (ioResult.success === true) {
this.props.dispatch(appActions.appHasLoaded());
if (ioResult.data !== '') {
const jsonData = JSON.parse(ioResult.data);
this.props.dispatch(classActions.replaceClasses(jsonData.classes));
this.props.dispatch(pupilActions.replacePupils(jsonData.pupils));
}

} else if (ioResult.errorObj.code === 'ENOENT') { // File doesn't exist.
writeAppData('', this.dataSaved);
} else { // Some other error.
this.props.dispatch(appActions.appHasErrored());
}
}

我正在考虑将 jsonData.classes 和 jsonData.pupils 放入 appActions.appHasLoaded() 调用中,并在我的类(class)和学生 reducer 中为 APP_HAS_LOADED 添加一个新案例。

这是更好的方法吗?将其减少为一个 Action ?进行单独的操作可以很容易地看到正在发生的事情......也许在 6 个月的时间里,我将不得不查看我的代码,以弄清楚如果我在其他 reducer 中使用 APP_HAS_LOADED 会发生什么。此外,在应用程序启动时加载的数据将扩展到类(class)和学生之外,因此如果我不合并这些调用,很快就会有更多的调度需要进行 - 也许我可以将数据存储在单独的文件中并加载每个文件一次一个,这也可以解决我必须连续调用多个操作的问题。

可以多次调用调度吗?

最佳答案

是的,可以。

来自 Redux 创建者 Dan Abramov:

Many reducers may handle one action. One reducer may handle many actions.

Redux Docs 中引用

还有一个对话on github关于这个。

关于reactjs - reducer 可以监听其他 Action 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48052571/

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