我有这个React Native应用程序以及redux,其中所有HTTP请求都是通过使用redux-promise-middleware的异步操作执行的。
现在我想处理API可以发送的每个错误,为此我实现了一个redux中间件,它将拦截XXX_REJECTED
类型的每个操作(自redux-promise-middleware发送以来异步操作失败时的_REJECTED
操作。)
但是现在我遇到了这个问题......在中间件中我希望能够发送一个新动作(例如API_ERROR
),并且仍然可以为原始动作执行next()
(XXX_REJECTED
)。
这是我的中间件:
export default ({ dispatch }) => next => (action) => {
if (action.type.match(/w*(_REJECTED)/)) {
dispatch({
type: 'API_ERROR',
payload: action.payload,
})
}
next(action)
}
但是在调度新操作后使用此代码,next()
永远不会执行。
这有意义吗?是否可以在中间件中调度多个操作?
答案 0 :(得分:0)
我认为您需要返回下一个操作。是的,您应该可以根据需要调度任意数量的动作。
return next(action)
答案 1 :(得分:0)
发现中间件的一切正常。您可以根据需要调度任意数量的操作。
我的错误是在reducer中,我有case
没有返回状态(只有console.log(action)
)。
我的坏!