当 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 一样?
答案 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 );
}
});