错误:操作必须是普通对象。使用自定义中间件进行异步操作。我究竟做错了啥?
Posted
技术标签:
【中文标题】错误:操作必须是普通对象。使用自定义中间件进行异步操作。我究竟做错了啥?【英文标题】:Error: Actions must be plain objects. Use custom middleware for async actions. What am I doing wrong?错误:操作必须是普通对象。使用自定义中间件进行异步操作。我究竟做错了什么? 【发布时间】:2021-03-21 15:06:28 【问题描述】:我正在尝试将这两个变量 current
和 duration
推送到 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 出现错误