gpt4 book ai didi

javascript - 是否可以使用 Redux Toolkit 从另一个 reducer 函数(在同一切片内)调用 reducer 函数?

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

我有这个小模块管理片:

const WorkspaceSlice = createSlice({
name: "workspace",
initialState: {
activeModule: null,
modules:
{
["someModule"]: { ...moduleRenderingData },
},
},
reducers: {
setActiveModule(state, action)
{
state.activeModule = action.payload;
},
addModule(state, action)
{
const { moduleName, renderingData } = action.payload;
if (!state.modules[moduleName])
{
state.modules[moduleName] = renderingData;
}

// state.activeModule = moduleName; <- basically the same as 'setActiveModule'
this.setActiveModule(state, action.payload.module); // <- 'this' is undefined
},
},
});

export default WorkspaceSlice;
我想做的是调用 setActiveModule来自 addModule这样我就不会有重复的代码,但我得到一个错误,因为 this未定义。
有没有办法从另一个 reducer 中调用一个 reducer ?那是什么语法?
如果没有,是否有可能以另一种方式实现此功能,假设我想同时保留 addModulesetActiveModule作为单独的 Action ?

最佳答案

slicecreateSlice 返回的对象包括您作为 slice.caseReducers 传入的每个 case reducer 函数,以帮助解决此类情况。
所以,你可以这样做:

addModule(state, action) {
const { moduleName, renderingData } = action.payload;
if (!state.modules[moduleName]) {
state.modules[moduleName] = renderingData;
}

WorkspacesSlice.caseReducers.setActiveModule(state, action);
},
此外,reducer 函数没有 this ,因为不涉及类实例。它们只是函数。

关于javascript - 是否可以使用 Redux Toolkit 从另一个 reducer 函数(在同一切片内)调用 reducer 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63564530/

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