无法在Redux工具包的createAsyncThunk中传递对象

ui7jx7zq  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(148)

我在运行submitHandler函数时尝试在createProductReview动作中传递两个参数,一个是id,另一个是包含两个项目的object,问题是我无法在createProductReview动作中传递对象,在reducer函数中控制台记录时给出undefine,我想知道如何传递这两个参数而不出错。请检查随附的图像是否有错误

提交处理程序****函数

const submitHandler = (e) => {
    e.preventDefault();
    dispatch(createProductReview({ id, { rating, comment } }));
  };

创建产品审阅

export const createProductReview = createAsyncThunk(
  'reviewProduct',
  async ({ productId, review }, thunkAPI) => {
    console.log(productId, review);
    try {
      const {
        userLogin: { userInfo },
      } = thunkAPI.getState();
      const config = {
        headers: {
          'Content-Type': 'application/json',
          Authorization: `Bearer ${userInfo.token}`,
        },
      };
      await axios.post(`/api/products/${productId}/reviews`, review, config);
    } catch (error) {
      const newError =
        error.response && error.response.data.message
          ? error.response.data.message
          : error.message;
      return thunkAPI.rejectWithValue(newError);
    }
  }
);

yx2lnoni

yx2lnoni1#

在javascript中,你需要给对象传递键,所以它应该是这样的

dispatch(createProductReview({ productId:id, review:{ rating, comment } }));

特别是,当你在函数中解构它的时候,因为解构是通过获取对象及其键来实现的。
例如:

const x = {temp:"1"}
const {temp} = x;
console.log(temp);
//1

相关问题