【发布时间】:2020-12-13 07:11:51
【问题描述】:
我有这个小的模块管理片:
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;
我要做的是从addModule 中调用setActiveModule,这样我就不会有重复的代码,但我收到一个错误,因为this 未定义。
有没有办法从另一个减速器中调用一个减速器?它的语法是什么?
如果没有,是否有可能以另一种方式实现此功能,假设我想将 addModule 和 setActiveModule 保留为单独的操作?
【问题讨论】:
标签: javascript reactjs redux react-redux redux-toolkit