在 getDefaultMiddlware 配置后 Redux 工具包 thunk 消失

Posted

技术标签:

【中文标题】在 getDefaultMiddlware 配置后 Redux 工具包 thunk 消失【英文标题】:Redux toolkit thunk disappears after getDefaultMiddlware config 【发布时间】: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 中发表评论并留下指向您的实际项目存储库的链接,或者将模拟您当前设置的沙箱/存储库放在一起?我想改进不变性检查性能,这听起来像是一个很好的压力测试。 谢谢,我会在几天内完成。 【参考方案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 ),

以上是关于在 getDefaultMiddlware 配置后 Redux 工具包 thunk 消失的主要内容,如果未能解决你的问题,请参考以下文章

控制台应用程序在部署后未从其配置文件中获取配置值

Linux 7修改网卡名称后配置文件中的默认网关不生效

nginx https配置后无法访问,可能防火墙在捣鬼

在Ubuntu上配置测试成功后如何重启nginx?

Exchange 2013 配置后任务

我可以在创建 NSURLSession 后更新其配置中的 cookie 吗?