错误:操作必须是普通对象。相反,实际的类型是:'Promise'。您可能需要添加中间件

Posted

技术标签:

【中文标题】错误:操作必须是普通对象。相反,实际的类型是:\'Promise\'。您可能需要添加中间件【英文标题】:Error: Actions must be plain objects. Instead, the actual type was: 'Promise'. You may need to add middleware错误:操作必须是普通对象。相反,实际的类型是:'Promise'。您可能需要添加中间件 【发布时间】:2021-12-10 20:20:39 【问题描述】:

我正在尝试使用 dipatch 获取用户和客户端列表,但出现以下错误: “错误:动作必须是普通对象。相反,实际类型是:'Promise'。您可能需要在商店设置中添加中间件来处理调度其他值,例如 'redux-thunk' 来处理调度函数。”

这是我得到错误的代码:

useEffect(() => 
        dispatch(ListClients());
        dispatch(ListUsers());
    , [dispatch]);

【问题讨论】:

【参考方案1】:

ListClients() 和 ListUsers 的定义是什么?

我很确定您的代码应该如下所示:

useEffect(() => 
    dispatch(ListClients);
    dispatch(ListUsers);
, [dispatch]);

或者你的函数没有正确的签名。

【讨论】:

我刚刚注意到我没有从正确的路径导入方法!感谢您提及检查函数的定义!

以上是关于错误:操作必须是普通对象。相反,实际的类型是:'Promise'。您可能需要添加中间件的主要内容,如果未能解决你的问题,请参考以下文章

Redux thunk - 错误 · 动作必须是普通对象。使用自定义中间件进行异步操作,即使调度具有键类型的对象

Redux 错误操作必须是普通对象。使用自定义中间件进行异步操作

未捕获的错误:操作必须是普通对象

尝试使用 redux-thunk,但它显示错误,即使对我来说一切都很好

错误:操作必须是普通对象。使用自定义中间件进行异步操作。

如何解决 react-redux 中的此错误“错误:操作必须是普通对象。使用自定义中间件进行异步操作。”