如何在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
相关产品推荐
相关产品推荐

