错误:操作必须是普通对象。使用自定义中间件进行异步操作。我究竟做错了啥?

Posted

技术标签:

【中文标题】错误:操作必须是普通对象。使用自定义中间件进行异步操作。我究竟做错了啥?【英文标题】:Error: Actions must be plain objects. Use custom middleware for async actions. What am I doing wrong?错误:操作必须是普通对象。使用自定义中间件进行异步操作。我究竟做错了什么? 【发布时间】:2021-03-21 15:06:28 【问题描述】:

我正在尝试将这两个变量 currentduration 推送到 redux 存储区。我收到了这个错误。我是新手,所以有人可以告诉我我做错了什么吗?

  const timeUpdateHandler = (e) => 
    const current = e.target.currentTime;
    const duration = e.target.duration;

    dispatch(timerUpdate(current, duration));
  ;

这是商店文件中的动作创建者:

export const timerUpdate = (current, duration) => async (dispatch) => 
  console.log(current);

  dispatch(
    type: PLAYER_TIMER_UPDATE,
    payload: 
      currentTime: current,
      duration: duration,
    ,
  );
;

【问题讨论】:

这能回答你的问题吗? How do I resolve "Actions must be plain objects. Use custom middleware for async actions.]"? 【参考方案1】:

问题是,您的动作创建者返回的不是object,而是Promise<object>。 这是因为您的操作创建者之前的 async 关键字。

async keyword 将结果包装在一个承诺中。您发布的代码块没有任何异步功能,因此您可以安全地删除它。

另一方面,如果您确实需要异步操作,请尝试按照 HMR 的建议使用 redux-thunk 库

【讨论】:

嘿,我添加了 thunk,现在它可以正常工作了。该异步被错误地放在那里。谢谢。

以上是关于错误:操作必须是普通对象。使用自定义中间件进行异步操作。我究竟做错了啥?的主要内容,如果未能解决你的问题,请参考以下文章

错误:操作必须是普通对象。使用自定义中间件进行异步操作。我究竟做错了啥?

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

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

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

动作必须是普通对象。使用自定义中间件进行异步操作/未定义不是对象/使用 navigator.geolocation 出现错误

React - Native ' Redux 未捕获错误:操作必须是普通对象。按下按钮时使用自定义中间件进行异步操作