在redux中间件

时间:2018-01-25 09:51:07

标签: javascript reactjs redux action middleware

我有这个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()永远不会执行。

这有意义吗?是否可以在中间件中调度多个操作?

2 个答案:

答案 0 :(得分:0)

我认为您需要返回下一个操作。是的,您应该可以根据需要调度任意数量的动作。

return next(action)

答案 1 :(得分:0)

发现中间件的一切正常。您可以根据需要调度任意数量的操作。

我的错误是在reducer中,我有case没有返回状态(只有console.log(action))。

我的坏!