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

配置redux-thunk后Redux调用get action仍报Actions must be plain objects错误如何解决

问题根因

你的Redux thunk配置完全正确,报错是因为get这个action creator存在部分执行分支无返回值的问题,dispatch时拿到的内容是undefined,Redux原生要求action必须是纯对象,thunk中间件只会处理函数类型的返回值,undefined不符合任何规则,直接触发类型校验报错。

具体错误点

看get函数的三个执行分支:

  • 第一个判断分支if (students && students.all.length > 0),仅调用了getCurrent(),没有将生成的action对象返回
  • 最后的else分支,同样仅调用getCurrent(),无返回值
  • 同时存在逻辑重复的问题,两次判断的条件可以合并简化

修复方案

修改student.js的action代码里的get函数,确保所有分支都有返回值:

export const get = (students, teacherId) => {
    // 已存在学生数据 直接返回获取当前数据的action
    if (students && students.all.length > 0) {
        return getCurrent();
    }
    // 无数据时返回thunk异步函数
    return async(dispatch) => {
        let result = await functions.get(teacherId);
        dispatch(fill(result));
    }
}

修改后所有执行分支要么返回普通action对象,要么返回thunk异步函数,完全符合Redux的校验要求,报错即可解决。

内容的提问来源于stack exchange,提问作者Pessi S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:15:10