redux-actions обрабатывает ошибки "автоматически":
, если полезная нагрузка является экземпляром объекта Error, redux-actions автоматически установит action.error в true
И полезная нагрузка будет являться полезной нагрузкой этого действия.
Но если полезная нагрузка сделана из ошибки, как я могу извлечь информацию из этого действия в моем редукторе, чтобы отметить соответствующуюэлемент как «при ошибке» (кроме извлечения информации из сообщения об ошибке)?
import { createAction } from 'redux-actions'
import * as api from '../api'
export const fetchSomethingRequest = createAction('FETCH_SOMETHING_REQUEST')
export const fetchSomethingResponse = createAction('FETCH_SOMETHING_RESPONSE')
export const fetchSomething = id => dispatch => {
dispatch(fetchSomethingRequest({ id }))
return api
.fetchSomething(id)
.then(something => dispatch(fetchSomethingResponse({ id, something })))
// I would like to add some information to be able afterwards (eg. in a
// reducer) to mark `id` as on error
.catch(error => dispatch(fetchSomethingResponse(error)))
// with regular actions, I would do something like this
// .catch(error => dispatch(fetchSomethingResponse({ id, error })))
}
Я думаю, я мог бы использовать meta
информацию о действии, но я думаю, что здесь что-то упущено.
Примечание: Стандартное действие Flux воспринимает ошибки как концепцию первого класса :
Действия потока могут рассматриваться какасинхронная последовательность значений.Для асинхронных последовательностей важно иметь дело с ошибками.В настоящее время многие реализации Flux не делают этого, а вместо этого определяют отдельные типы действий, такие как LOAD_SUCCESS и LOAD_FAILURE.Это не идеально, потому что перегружает две разные задачи: устранение неоднозначности действий определенного типа из «глобальной» последовательности действий и указание, представляет ли действие ошибку.FSA рассматривает ошибки как концепцию первого класса.