Actions must be plain objects. Use custom middleware for async actions.

博客内容讲述了在React应用中遇到的错误——'Actions must be plain objects. Use custom middleware for async actions.'。问题源于在封装action时,ES6箭头函数的语法错误,导致传递给store的不是一个纯粹的对象。作者通过调试发现并纠正了缺少括号的箭头函数,提供了一个正确的写法示例,从而解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个问题网上有很详细的解释,这里我只说下我引起这个问题的原因。


我将Redux中的actoin封装到一个函数中后,在组件的一个方法中使用这个函数:

const getChangeInputValueAction = (value) => {
  type: CHANGE_INPUT_VALUE,
  value
};

handleInputChange(e) {
  const action = getChangeInputValueAction(e.target.value);
  store.dispatch(action);
}

然后就报错了,经过调试之后,发现我封装action时,ES6的语法打错了…
以至于const action = getChangeInputValueAction(e.target.value);这段代码得到的action变成了undefined

所以我的代码报这个错误的原因是:dispatch传了个值为undefined的参数

上面的getChangeInputValueAction箭头函数后面少些的一个圆括号,正确的写法如下:

const getChangeInputValueAction = (value) => ({
  type: CHANGE_INPUT_VALUE,
  value
});

仅供参考~

END!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值