【问题标题】:Redux toolkit thunk disappears after getDefaultMiddlware config在 getDefaultMiddlware 配置后 Redux 工具包 thunk 消失
【发布时间】:2021-06-21 05:06:36
【问题描述】:

我的商店是这样的:

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.

有什么想法吗?

【问题讨论】:

  • 显示您尝试发送的 thunk,以及如何发送它?另外,为什么需要关闭不变性检查?
  • @markerikson 刚刚更新了 thunk。这是在减速器之一(sequencerSlice)中定义的。我有im检查已关闭,因为我正在构建一个具有数千个状态属性的深度嵌套的鼓音序器。检查使应用程序的使用速度太慢。
  • 嗯。与此问题无关,但您能否在github.com/reduxjs/redux-toolkit/issues/926 中发表评论并留下指向您的实际项目存储库的链接,或者将模拟您当前设置的沙箱/存储库放在一起?我想改进不变性检查性能,这听起来像是一个很好的压力测试。
  • 谢谢,我会在几天内完成。

标签: redux redux-thunk redux-toolkit thunk


【解决方案1】:

我看到了问题。你的middleware 函数没有返回任何东西。你有那个 middleware 箭头函数的花括号,所以它是一个没有隐式返回的函数体。您要么需要添加显式 return 语句,要么通过删除花括号将其更改为隐式返回。因此,您最终根本没有设置任何中间件。

编辑

说清楚,你想要的是:

export default configureStore({
  reducer: {
    sequencer: sequencerReducer,
    editMode: editModeReducer,
    tone: toneReducer,
    app: appReducer,
  },
  middleware: (getDefaultMiddleware) => {
    return getDefaultMiddleware({ immutableCheck: false });
  },
});

【讨论】:

  • middleware: (getDefaultMiddleware) => { getDefaultMiddleware({ immutableCheck: false }); }, 应该变成 middleware: (getDefaultMiddleware) => { return getDefaultMiddleware({ immutableCheck: false }); },middleware: (getDefaultMiddleware) => getDefaultMiddleware({ immutableCheck: false }),
猜你喜欢
  • 1970-01-01
  • 2022-12-21
  • 2022-01-06
  • 2021-08-04
  • 2018-07-05
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
相关资源
最近更新 更多