我应该如何在 createAsyncThunk 中设置参数和参数?
How should I set the arguments and parameters in createAsyncThunk?
有时当我 运行 loadPosts 调度时,我不发送任何数据,有时我将 lastId 数据发送到同一个 loadPosts disaptch。
此时我不知道如何在createAsyncThunk中定义数据的类型。
当我 运行 我的代码时,我在 loadPosts 中收到红色警告。
喜欢这个截图
它说
预期有 1 个参数,但得到 0 个。
如何修复我的代码?
这是我的代码
dispatch(loadPosts());
dispatch(loadPosts(lastId:lastId));
export const loadPosts = createAsyncThunk(
'post/loadPosts',
async (data: any, thunkAPI) => {
try {
const response = await axios.get(`/post?lastId=${data?.lastId || 0}`);
return response.data;
} catch (error: any) {
return thunkAPI.rejectWithValue(error.response.data);
}
},
使 data
参数可选:
async (data: any?, thunkAPI) => {
RTK 文档:https://redux-toolkit.js.org/usage/usage-with-typescript#createasyncthunk
export const loadPosts = createAsyncThunk<
YourReturnType,
{
lastId: number;
} | void,
{ state: AppStore }
>('post/loadPosts', async (data, thunkAPI) => {
try {
const response = await axios.get(`/post?lastId=${data?.lastId || 0}`);
return response.data;
} catch (error) {
return thunkAPI.rejectWithValue(error.response.data);
}
});
有时当我 运行 loadPosts 调度时,我不发送任何数据,有时我将 lastId 数据发送到同一个 loadPosts disaptch。
此时我不知道如何在createAsyncThunk中定义数据的类型。 当我 运行 我的代码时,我在 loadPosts 中收到红色警告。
喜欢这个截图
它说 预期有 1 个参数,但得到 0 个。
如何修复我的代码?
这是我的代码
dispatch(loadPosts());
dispatch(loadPosts(lastId:lastId));
export const loadPosts = createAsyncThunk(
'post/loadPosts',
async (data: any, thunkAPI) => {
try {
const response = await axios.get(`/post?lastId=${data?.lastId || 0}`);
return response.data;
} catch (error: any) {
return thunkAPI.rejectWithValue(error.response.data);
}
},
使 data
参数可选:
async (data: any?, thunkAPI) => {
RTK 文档:https://redux-toolkit.js.org/usage/usage-with-typescript#createasyncthunk
export const loadPosts = createAsyncThunk<
YourReturnType,
{
lastId: number;
} | void,
{ state: AppStore }
>('post/loadPosts', async (data, thunkAPI) => {
try {
const response = await axios.get(`/post?lastId=${data?.lastId || 0}`);
return response.data;
} catch (error) {
return thunkAPI.rejectWithValue(error.response.data);
}
});