Что я делаю, так это все мои logi c в моем методе действий и создаю редукторы для случаев, когда действие выполняется правильно, а еще одно для случаев, когда отклоняется. В выполненном редукторе я бы выполнил обычные инструкции, а в отклоненном редукторе я бы добавил данные в переменную с именем error, которая у меня всегда есть в моем состоянии, и использовал бы в интерфейсе, чтобы при необходимости показать сообщение об ошибке.
Пример
Это действие, которое создает дом путем отправки почтового запроса на мой api, который возвращает созданный объект или ошибку, если что-то пошло не так.
export const createHouse = houseData => {
const URL = HTTP://EXAMPLE.URL
return async dispatch => {
try {
const response = await axios.post(`${URL}`, houseData);
const data = await response.data;
dispatch({ type: "CREATE_HOUSE_DRAFT_FULFILLED", data });
} catch (err) {
dispatch({ type: "CREATE_HOUSE_DRAFT_REJECTED", data: err });
}
};
};
Тогда я бы У вас есть 2 метода редуктора для получения выполненного или отклоненного ответа, например:
case 'CREATE_HOUSE_DRAFT_FULFILLED': {
return {
houses: [action.data, ...state.houses],
house: action.data,
houseCount: state.houseCount + 1,
fetched: true,
error: null
};
}
case 'CREATE_HOUSE_DRAFT_REJECTED': {
return {
...state,
error: action.data.response.data,
fetched: false,
success: null
};
}
Надеюсь, это сработает для вас!