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

React Redux应用问题:删除心愿单时参数传递异常

问题诊断与修复:React Redux心愿单删除功能参数undefined问题

核心原因

你遇到的问题是参数名称不匹配:

  • 在Wishlist.jsx的handleDeleteWish函数中,dispatch时传递的参数对象键是wishlistItemId:
    await dispatch(handleDeleteWishEl({ userId, wishlistItemId }));
    
  • 但在handleDeleteWishEl这个createAsyncThunk中,解构的参数键是wishlistElId:
    async ({ userId, wishlistElId }, thunkAPI) => { ... }
    

因为键名不一致,wishlistElId自然会拿到undefined,而userId因键名匹配所以正常。

修复方案

任选以下一种方式即可解决:

方式1:修改Async Thunk的参数解构

把thunk中的wishlistElId改为wishlistItemId,保持和dispatch时的键名一致:

export const handleDeleteWishEl = createAsyncThunk(
  "user/wishlist/delete",
  async ({ userId, wishlistItemId }, thunkAPI) => {
    try {
      console.log("userId inside handleDeleteWishEl:", userId);
      console.log("wishlistItemId inside handleDeleteWishEl:", wishlistItemId);

      const response = await axios.delete(
        `${process.env.REACT_APP_SERVERBASE_URL}/users/${userId}/wishlist/${wishlistItemId}/delete`
      );
      return response.data;
    } catch (error) {
      return thunkAPI.rejectWithValue(error.message);
    }
  }
);

方式2:修改dispatch时的参数键名

如果不想改动thunk,就调整dispatch时的参数键为wishlistElId:

const handleDeleteWish = async (userId, wishlistItemId) => {
  try {
    console.log("userId:", userId);
    console.log("wishlistItemId:", wishlistItemId);

    // 这里把参数键改成wishlistElId
    await dispatch(handleDeleteWishEl({ userId, wishlistElId: wishlistItemId }));
  } catch (error) {
    console.error("Error removing element from wishlist:", error);
  }
};

额外调试建议

以后遇到类似参数传递异常的问题,可以在thunk中先打印完整的payload对象,快速排查键名是否匹配:

export const handleDeleteWishEl = createAsyncThunk(
  "user/wishlist/delete",
  async (payload, thunkAPI) => {
    // 打印完整payload,查看实际传入的键值对
    console.log("传入的完整参数:", payload);
    const { userId, wishlistItemId } = payload;
    // ... 后续代码
  }
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:22:46