如何使用 Redux createAsyncThunk 访问后端错误

时间:2021-06-26 05:21:51

标签: redux react-redux redux-toolkit

当 POST 请求发送到后端时,我不确定我应该如何获取来自后端的错误。如果我使用普通的 axios 调用,我可以简单地从 catch 块中的响应对象中获取错误:

error.response.data.errors

但是当使用 Redux 并使用 createAsyncThunk 方法时,在来自服务器的 400 状态代码上,会调度一个被拒绝的操作,并且我得到的错误对象是一个像这样的通用对象:

{
  message: "Request failed with status code 400"
  name: "Error"
  stack: "Error: Request failed with status code 400\n...."
}

如何获取服务器错误,就像使用 axios 一样?

2 个答案:

答案 0 :(得分:0)

我认为您可以做的是为错误添加额外的检查,并使用 try catch 块包装 axios 发布请求。 注意:在您的情况下,请求失败了,所以我想您提出请求的方式一定存在一些错误。

答案 1 :(得分:0)

您可以使用 redux-toolkit 中的 rejectWithValue 函数将服务器错误作为被拒绝操作的有效负载属性。

应该是这样的(未经测试的代码,因为我在用手机)

const myAction = createAsyncThunk(
  ‘actionName’,
  async ( arg, {rejectWithValue} ) => {
    try {
      const res = await axios.post(…);
      return res.data;
    } catch (error) {
       return rejectWithValue( error.response.data.errors );
    }
});