Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 我对axios错误的Redux处理应该使用不同的操作,还是使用附加数据的相同操作?_Reactjs_Redux_React Redux_Axios_Redux Thunk - Fatal编程技术网

Reactjs 我对axios错误的Redux处理应该使用不同的操作,还是使用附加数据的相同操作?

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中解析响应,并发送单独的操作,如

我正在使用Axios和Thunk中间件以及redux调用api,以获取事务列表。API返回的任何错误也将返回一个错误对象。该错误对象的格式为

{
  "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应该包含尽可能少的业务逻辑。还原者应该是主要的“真理之源”,而不是单一的真理之源