在Redux中间件中分发多个动作

3
我有一个使用redux的React Native应用程序,所有HTTP请求都通过异步操作使用redux-promise-middleware执行。现在,我想处理API可能发送的每个错误,因此我正在实现一个redux中间件,该中间件将拦截每个类型为XXX_REJECTED的操作(因为redux-promise-middleware在异步操作失败时会派发一个_REJECTED操作)。但是现在我遇到了这个问题...在中间件中,我想能够调度一个新操作(例如API_ERROR),并仍然能够对原始操作(XXX_REJECTED)执行next()。以下是我的中间件:
export default ({ dispatch }) => next => (action) => {
  if (action.type.match(/w*(_REJECTED)/)) {
    dispatch({
      type: 'API_ERROR',
      payload: action.payload,
    })
  }

  next(action)
}

但是,使用此代码后,一旦新操作被分派,next()就不会被执行。

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

2个回答

2

我认为你需要返回下一个动作。是的,你应该能够分派任意多个动作。

return next(action)

非常感謝!真的很感激。但實際上我發現中介軟體一切都沒問題。問題在於那個減量器 :/ 是我自己的錯誤。此外,請注意 dispatch 不會返回 Promise,因此無法使用 .then 進行鏈接。但還是謝謝你的幫助!:D - user2997932
我以为你的中间件是用于异步操作的。哦,那么就不要与.then链接了 :D - damm123

0
发现中间件一切正常。您可以随意分派多个操作。
我的错误在于reducer中,我有一个没有返回状态的case(只有一个console.log(action))。
我的错!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接