redux - 如何使用 Redux createAsyncThunk 访问后端错误
问题描述
我不确定当 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 一样?
解决方案
您可以使用 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 );
}
});
推荐阅读
- sql - SQL - 如何查找两行之间缺少值的条目
- java - 编写一个正则表达式来确定匹配的数量并提取所需的字符串
- firebase - 基于文档ID数组从firebase批量读取 - Swift 4
- spring-boot - 会话管理不适用于 Spring Boot 和 Zuul 代理
- python - 我的函数如何将 csv 文件作为输入?
- c++ - 为什么斐波那契数列的这些动态编程实现之一比另一个更快?
- javascript - 在 Javascript 文件中使用带有 JSON 数据的大小写切换
- python - keras model.save() 引发 NotImplementedError
- regex - 用完 Perl 的命令管道在 sed 前置路径时失败
- node.js - req.handle.writev 不是函数