Redux 工具包 thunk 在 getDefaultMiddlware 配置后消失
Redux toolkit thunk disappears after getDefaultMiddlware config
我的店铺是这样的:
export default configureStore({
reducer: {
sequencer: sequencerReducer,
editMode: editModeReducer,
tone: toneReducer,
app: appReducer,
},
middleware: (getDefaultMiddleware) => {
getDefaultMiddleware({ immutableCheck: false });
},
});
我有一个可以正常工作的 thunk,但我需要这个 immutableCheck: false
配置。一旦设置它似乎覆盖了默认的中间件并且 thunk 不再工作。这是我的声音:
export const modCell = (step, noteOn) => (dispatch, getState) => {
const selectedSound = getState().editMode.selectedSound;
dispatch(sequencerSlice.actions.toggleCell({ step, selectedSound }));
};
这是我得到的错误:
Error: Actions must be plain objects. Use custom middleware for async actions.
有什么想法吗?
我明白了。您的 middleware
函数不是 returning 任何东西。 middleware
箭头函数有大括号,所以它是一个没有隐式 return 的函数体。您要么需要添加显式 return
语句,要么通过删除大括号将其更改为隐式 return 。所以,你最终根本没有设置任何中间件。
编辑
说清楚,你要的是:
export default configureStore({
reducer: {
sequencer: sequencerReducer,
editMode: editModeReducer,
tone: toneReducer,
app: appReducer,
},
middleware: (getDefaultMiddleware) => {
return getDefaultMiddleware({ immutableCheck: false });
},
});
我的店铺是这样的:
export default configureStore({
reducer: {
sequencer: sequencerReducer,
editMode: editModeReducer,
tone: toneReducer,
app: appReducer,
},
middleware: (getDefaultMiddleware) => {
getDefaultMiddleware({ immutableCheck: false });
},
});
我有一个可以正常工作的 thunk,但我需要这个 immutableCheck: false
配置。一旦设置它似乎覆盖了默认的中间件并且 thunk 不再工作。这是我的声音:
export const modCell = (step, noteOn) => (dispatch, getState) => {
const selectedSound = getState().editMode.selectedSound;
dispatch(sequencerSlice.actions.toggleCell({ step, selectedSound }));
};
这是我得到的错误:
Error: Actions must be plain objects. Use custom middleware for async actions.
有什么想法吗?
我明白了。您的 middleware
函数不是 returning 任何东西。 middleware
箭头函数有大括号,所以它是一个没有隐式 return 的函数体。您要么需要添加显式 return
语句,要么通过删除大括号将其更改为隐式 return 。所以,你最终根本没有设置任何中间件。
编辑
说清楚,你要的是:
export default configureStore({
reducer: {
sequencer: sequencerReducer,
editMode: editModeReducer,
tone: toneReducer,
app: appReducer,
},
middleware: (getDefaultMiddleware) => {
return getDefaultMiddleware({ immutableCheck: false });
},
});