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

Redux-Toolkit中createAsyncThunk调用报错:期望0个参数却传入1个

解决Redux createAsyncThunk调用时的参数类型错误

这个报错是因为TypeScript无法自动推断createAsyncThunk接收的参数类型,默认认为该thunk不需要传入参数,导致你传selectedFolderId时触发类型检查错误。

解决方法:显式指定泛型类型

给createAsyncThunk添加泛型定义,明确指定返回值类型、参数类型以及可选的错误返回值类型:

// 先定义返回数据的类型(根据接口返回结构自定义)
type DirectoryResponse = {
  // 示例字段,替换为你的实际返回结构
  id: string;
  name: string;
};

export const deleteDirectories = createAsyncThunk<
  DirectoryResponse, // 第一个泛型:thunk成功时返回的数据类型
  string | number,   // 第二个泛型:thunk接收的参数类型(对应你的id类型)
  { rejectValue: string } // 第三个泛型:reject时返回的错误值类型(可选)
>(
  "directories/deleteDirectories",
  async (id, thunkAPI) => {
    try {
      const response = await axios.delete(`${url}directories/${id}`);
      return response.data;
    } catch (error) {
      return thunkAPI.rejectWithValue("Something went wrong...");
    }
  }
);

如果不需要定义错误返回值类型,可以简化为:

export const deleteDirectories = createAsyncThunk<DirectoryResponse, string>(
  "directories/deleteDirectories",
  async (id, thunkAPI) => {
    try {
      const response = await axios.delete(`${url}directories/${id}`);
      return response.data;
    } catch (error) {
      return thunkAPI.rejectWithValue("Something went wrong...");
    }
  }
);

关键说明

显式指定泛型后,TypeScript就能正确识别deleteDirectories需要接收一个参数,此时在组件中dispatch(deleteDirectories(selectedFolderId))就不会再触发类型错误。如果你的selectedFolderId是number类型,只需对应修改第二个泛型的类型即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 06:25:04