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

如何在Redux中调用异步函数?配置redux-thunk仍报错求助

问题排查与修复

核心问题

你的someAsyncFunction action creator错误嵌套了两层async,导致它返回的是Promise而非Redux-Thunk所需的函数(thunk),Redux无法识别该异步逻辑,因此触发了报错。

修复步骤

修改actions/index.js中的someAsyncFunction,移除外层的async关键字,同时优化异步逻辑写法(统一用await替代then,避免嵌套):

export function someAsyncFunction() {
  return async (dispatch) => {
    try {
      const snapshot = await firebase.firestore().collection("Users").get();
      const users = snapshot.docs.map(doc => ({
        id: doc.id,
        ...doc.data()
      }));
      dispatch({ type: USERS_STATE_CHANGE, users });
    } catch (error) {
      // 可选:添加错误处理,比如派发错误action或打印日志
      console.error("获取用户列表失败:", error);
    }
  };
}

原因说明

Redux-Thunk要求action creator返回的是接收dispatch参数的函数,而非直接返回action对象或Promise。你原本的代码里,外层的async会让someAsyncFunction()调用后返回Promise,而非处理异步逻辑的thunk函数,因此Redux会把这个Promise当作普通action处理,触发"Actions必须是纯对象"的警告。

你的store配置(Redux-Thunk中间件、Provider挂载)都是正确的,仅需修复action creator的写法即可解决问题。

内容的提问来源于stack exchange,提问作者newbie coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 14:01:27