【问题标题】: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,
    },
  });
};

【问题讨论】:

标签: javascript html reactjs redux


【解决方案1】:

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

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

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

【讨论】:

  • 嘿,我添加了 thunk,现在它可以正常工作了。该异步被错误地放在那里。谢谢。
猜你喜欢
  • 2018-02-24
  • 1970-01-01
  • 2018-01-30
  • 2020-11-05
  • 2019-12-26
  • 2020-11-09
  • 1970-01-01
  • 2021-11-04
  • 2020-04-18
相关资源
最近更新 更多