Reactjs 我对axios错误的Redux处理应该使用不同的操作,还是使用附加数据的相同操作?
我正在使用Axios和Thunk中间件以及redux调用api,以获取事务列表。API返回的任何错误也将返回一个错误对象。该错误对象的格式为Reactjs 我对axios错误的Redux处理应该使用不同的操作,还是使用附加数据的相同操作?,reactjs,redux,react-redux,axios,redux-thunk,Reactjs,Redux,React Redux,Axios,Redux Thunk,我正在使用Axios和Thunk中间件以及redux调用api,以获取事务列表。API返回的任何错误也将返回一个错误对象。该错误对象的格式为 { "error": { "id": "string", "name": "string", "detail": "string" } } 如果我收到400,这是一些一般性错误,但404表示没有找到任何事务。我想知道的是,逻辑应该存在于哪里来解析响应?我是否应该在action creator中解析响应,并发送单独的操作,如
{
"error": {
"id": "string",
"name": "string",
"detail": "string"
}
}
如果我收到400,这是一些一般性错误,但404表示没有找到任何事务。我想知道的是,逻辑应该存在于哪里来解析响应?我是否应该在action creator中解析响应,并发送单独的操作,如下所示:
catch (e) {
if (e.response) {
if (e.response.status === 400) {
//failed for some reason
dispatch({type: TRANSACTION_REQUEST_ERROR, data: e.response.data})
}
if(e.response.status === 404) {
//no transactions, no problem.
dispatch({type: NO_TRANSACTIONS_FOUND, data: e.response.data})
}
}
}
或者,我是否应该使用相同的操作,并包含减速器在决定如何更新状态时需要的任何响应信息,将该逻辑委托给减速器
catch (e) {
if (e.response) {
dispatch({type: TRANSACTION_REQUEST_ERROR, data: e.response.data})
}
}
//减速器
switch(action.type) {
case TRANSACTION_REQUEST_ERROR:
if(action.data.error.id === 'some id)
//update some state
else
//do something else
}
或者,是一个六个,另一个六个吗?我只会用一个动作处理错误,并在减速器中处理案例。这确保了应用程序中的每个请求都是同构的,并且只有3个操作
\u request
,\u SUCCESS
,\u ERROR
。而且更容易与类似或其他的中间产品集成。我认为这是个人偏好的问题,但在我看来,处理这一问题的“Redux方式”应该是减速机。动作创建者/Thunk应该包含尽可能少的业务逻辑。还原者应该是主要的“真理之源”,而不是单一的真理之源