Redux Toolkit中dispatch调用createAsyncThunk方法提示未定义如何解决
问题原因
- 你在home reducer文件中通过
createAsyncThunk创建的getOffers方法没有对外导出,只有reducer本身被默认导出了,外部文件无法访问到这个方法 - home.js组件内没有导入
getOffers方法,直接调用自然会触发未定义的引用错误
修复步骤
- 修改home reducer文件,在原有导出逻辑的基础上新增对
getOffers的导出:
// 原有代码 export default home.reducer; // 新增如下代码 export { getOffers };
- 在home.js组件的导入区域,添加对
getOffers的导入,将路径替换为你项目中home reducer文件的实际存储路径即可:
// 示例路径,根据你的项目结构调整 import { getOffers } from '../../store/slices/home';
可选优化
你当前的逻辑只处理了异步请求成功的状态,建议补充pending、rejected状态的处理,完善加载态、错误态的展示:
extraReducers: builder => { builder .addCase(getOffers.pending, (state) => { state.offers.loader = true; state.offers.err = null; }) .addCase(getOffers.fulfilled, (state, action) => { state.offers.loader = false; state.offers.data = action.payload }) .addCase(getOffers.rejected, (state, action) => { state.offers.loader = false; state.offers.err = action.error.message }); },
内容的提问来源于stack exchange,提问作者Erbaz Kamran
相关产品推荐
相关产品推荐

