You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redux中派发Logout Action报错「Actions must be plain objects」的解决方法

修复"Actions must be plain objects"错误:正确派发Logout Action的方法

这个问题我太熟了,一眼就能看出问题所在——你直接把logout函数传给了dispatch,但Redux的dispatch只接受纯对象格式的action。你定义的logout是一个生成action对象的函数,而非action本身,直接传函数自然会触发这个错误。

简单修复方案

只需要把store.dispatch(logout)改成store.dispatch(logout())就可以解决。调用logout()会执行这个函数,返回你定义的{ type: LOGOUT }纯对象action,这才是dispatch能正确处理的格式。

修改后的request函数catch块代码如下:

.catch(err => {
  console.log(err);
  if (err.response.status === 401) {
    // 调用logout函数获取action对象再派发
    store.dispatch(logout());
  }
  throw err;
});

额外补充

如果之后你的登出逻辑需要处理异步操作(比如调用后端的登出API),那你就得引入Redux Thunk这类中间件来支持派发函数格式的action。但就目前你的代码而言,logout只是同步生成action的函数,只要调用它拿到返回的对象再dispatch就完全没问题了。

内容的提问来源于stack exchange,提问作者Igor Shmukler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 13:47:29