【问题标题】:Dispatch multiple action in redux middleware在 redux 中间件中调度多个动作
【发布时间】:2018-07-04 12:41:32
【问题描述】:

我有这个 React Native 应用程序和 redux,其中所有 HTTP 请求都是通过使用 redux-promise-middleware 的异步操作执行的。

现在我想处理 API 可以发送的每个错误,为此我正在实现一个 redux 中间件,该中间件将拦截 XXX_REJECTED 类型的每个操作(因为redux-promise-middleware 调度 _REJECTED 操作时异步操作失败)。

但是现在我遇到了这个问题...在中间件中,我希望能够调度一个新动作(例如 API_ERROR)并且仍然能够为原始动作执行 next()(@987654327 @)。

这是我的中间件:

export default ({ dispatch }) => next => (action) => {
  if (action.type.match(/w*(_REJECTED)/)) {
    dispatch({
      type: 'API_ERROR',
      payload: action.payload,
    })
  }

  next(action)
}

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

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

【问题讨论】:

    标签: javascript reactjs redux action middleware


    【解决方案1】:

    我认为您需要返回下一个操作。是的,您应该能够发送任意数量的操作。

    return next(action)
    

    【讨论】:

    • 非常感谢!非常感谢。但实际上我发现中间件一切正常。问题出在减速器上:/我的错。请注意dispatch 不会返回承诺,因此您不能将其与.then 链接。但是谢谢你的帮助! :D
    • 我认为您的中间件是用于异步操作的。哦,好吧,那就不要用.then链接它然后:D
    【解决方案2】:

    发现中间件一切正常。您可以发送任意数量的操作。

    我的错误出现在减速器中,我有一个 case 没有从它返回任何状态(只有一个 console.log(action))。

    我的错!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-10
      • 1970-01-01
      • 2017-04-14
      • 2016-07-23
      • 2021-06-30
      • 2018-06-12
      • 2017-11-03
      相关资源
      最近更新 更多