redux-actions “自动”处理错误:
如果 payload 是 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 Standard Action将错误视为一流的概念:
Flux 动作可以被认为是一个异步的值序列。异步序列处理错误很重要。目前,许多 Flux 实现不这样做,而是定义单独的操作类型,如 LOAD_SUCCESS 和 LOAD_FAILURE。这不太理想,因为它重载了两个独立的问题:从“全局”动作序列中消除某种类型的动作的歧义,以及指示动作是否代表错误。FSA 将错误视为一流的概念。