Redux Toolkit中createAsyncThunk报错:rejectWithValue未定义
问题分析与解决
核心错误原因
你把createAsyncThunk异步函数的参数顺序搞反了。createAsyncThunk的异步回调函数第一个参数是调用该thunk时传入的payload数据,第二个参数才是包含rejectWithValue等方法的thunkAPI对象。你现在把thunkAPI放在了第一个参数位置,当调用getData时如果没有传入payload,这个参数就会是undefined,自然无法解构出rejectWithValue。
额外的axios导入问题
另外你的axios导入也存在错误:import { Axios } from "axios"是导入axios的类,实际应该用默认导入的axios实例来发起请求,也就是import axios from "axios"。
修正后的代码
import { createSlice, createAsyncThunk } from "@reduxjs/toolkit"; import axios from "axios"; // 修正axios导入 // 调整参数顺序:第一个是payload(用_占位表示不需要),第二个是thunkAPI export const getData = createAsyncThunk("data/get", async (_, thunkAPI) => { try { const response = await axios.get("/data"); // 使用axios实例发起请求 return response.data; } catch (error) { const { rejectWithValue } = thunkAPI; // 加可选链避免error.response不存在的情况 return rejectWithValue(error.response?.data || error.message); } });
关于你的其他疑问
- 不需要安装额外依赖包,@reduxjs/toolkit已经内置了所需的thunk功能
- 语法规则没有变更,只是你对createAsyncThunk的参数定义逻辑理解有误
内容的提问来源于stack exchange,提问作者adler
相关产品推荐
相关产品推荐

