Я вызываю api, используя промежуточное ПО Ax ios и Thunk с redux, чтобы получить список транзакций. Для любых ошибок, возвращаемых API, также будет возвращен объект ошибки. Этот объект ошибки имеет формат
{
"error": {
"id": "string",
"name": "string",
"detail": "string"
}
}
. Если я получаю 400, это какая-то общая c ошибка, но 404 означает, что транзакции не найдены. Я хотел бы знать, где должен жить logi c, чтобы проанализировать ответ? Должен ли я анализировать ответ в создателе действия и отправлять отдельные действия, выглядящие примерно так:
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})
}
}
}
или я должен использовать то же действие и включать любую информацию ответа, которая требуется редуктору для принятия решения о том, как обновить состояние, делегируя этот logi c редуктору?
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
}
Или это шесть из одного, полдюжины другое?