我正在将Rxjs与React(TS)一起使用,在我的史诗中,我有switchMap,我在其中调用API。然后是map和catchErrors,我想将错误响应传递给我的reducer,但是它不起作用。
我找到了以下示例:https://redux-observable.js.org/docs/recipes/ErrorHandling.html
所以我用了它:
switchMap((action) => from(Currencies.getAll(action.payload)).pipe(
map((currencies: any) => {
return ({type: FETCH_CURRENCIES_SUCCESS, payload: {
name: action.payload,
currencies: currencies,
}});
}),
catchError(error => of({
type: SEND_CURRENCIES_ERROR,
payload: error.xhr.response,
error: true,
}))
))
,我的后端返回错误的422代码。它达到catchErrors并将有效负载传递给减速器,但是如果我执行console.log,我会看到标准错误消息:
Error: Request failed with status code 422
at createError (createError.js:16)
at settle (settle.js:18)
at XMLHttpRequest.handleLoad (xhr.js:77)
在“网络”标签中,我看到红色请求和“预览”标签中的错误,状态,标题等都是从后端返回的。如何在我的史诗中获取这些数据?
答案 0 :(得分:0)
Ofc真是愚蠢的事情。我在项目中使用axios,在错误响应中,显然没有xhr对象。只需将catchError中的有效负载替换为:
payload: error.response.data,