createAsyncThunk:错误:无法使用两个 reducer 调用相同操作类型的 addCase

Posted

技术标签:

【中文标题】createAsyncThunk:错误:无法使用两个 reducer 调用相同操作类型的 addCase【英文标题】:createAsyncThunk: Error: addCase cannot be called with two reducers for the same action type 【发布时间】:2021-09-23 06:35:43 【问题描述】:

当我将操作连接到 extraReducers 时出现此错误 我的代码是

export const fetchCountries = createAsyncThunk(
  `country`, 
  async (organizationId: string) => 

export const saveCountry = createAsyncThunk(
  `country`,
  async (  => )

const regions = createSlice(
  name,
  initialState,
  reducers: ,
  extraReducers: builder => 
    builder.addCase(fetchCountries.pending, isFetching);
    builder.addCase(fetchCountries.rejected, error);
    builder.addCase(fetchCountries.fulfilled, (state, action) => );

    builder.addCase(saveCountry.pending, isFetching);
    builder.addCase(saveCountry.rejected, error);
    builder.addCase(saveCountry.fulfilled, (state, payload) => );

如果我运行我会得到这个错误: Error: addCase cannot be called with two reducers for the same action type

【问题讨论】:

【参考方案1】:

发生这种情况是因为在我的操作中很少有 AsyncThunks 操作具有相同的 typePrefix

所以它必须有不同的名字:

export const fetchCountries = createAsyncThunk(
  `country/get`, //<------ this first argument (typePrefix) must be unique
  async (organizationId: string) => 

export const saveCountry = createAsyncThunk(
  `country/post`,
  async (  => )

【讨论】:

感谢您帮助减少查找 thunk 复制粘贴错误所需的时间 :)

以上是关于createAsyncThunk:错误:无法使用两个 reducer 调用相同操作类型的 addCase的主要内容,如果未能解决你的问题,请参考以下文章

CreateAsyncThunk 错误:操作必须是普通对象。使用自定义中间件进行异步操作

调度由 saga 中的 createAsyncThunk 创建的操作时出现打字稿错误

Redux-Toolkit createAsyncThunk Dispatch 显示为未定义

使用axios时如何在createAsyncThunk中创建payload

createAsyncThunk 和使用 redux-toolkit 编写 reducer 登录

如何正确使用带有 typescript 的 createAsyncThunk 函数?