【发布时间】:2018-10-09 18:03:16
【问题描述】:
redux-actions “自动”处理错误:
如果有效负载是一个错误对象的实例,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 将错误视为first class concept:
Flux 动作可以被认为是一个异步的值序列。这是 对于异步序列处理错误很重要。目前,许多通量 实现不这样做,而是定义单独的动作类型,如 LOAD_SUCCESS 和 LOAD_FAILURE。这不太理想,因为它超载 两个不同的关注点:消除某种类型的动作与 “全局”动作序列,并指示一个动作是否代表一个 错误。 FSA 将错误视为一流的概念。
【问题讨论】:
标签: javascript redux redux-actions