【发布时间】:2017-07-28 04:49:48
【问题描述】:
所以我刚刚阅读了 redux 中间件,它听起来很棒。有一件事让我很烦恼——中间件的返回值。
我了解某些中间件实例会返回内容(即redux-promise),而我知道其他中间件(即logging)不会 - 并且只是返回next(action) 的结果。
我的问题是,如果我想使用两个都返回东西的中间件会发生什么 - 它们肯定会互相破坏,我只会得到最外面的中间件的返回值。
express/connect 中间件通过让中间件将其“结果”写入req 和res 对象来解决这个问题,但是redux 的解决方案是什么?
编辑
这是我的问题的一个更具体的例子:
我有两个中间件:
- 将所有操作延迟 3 秒分派的中间件。这个中间件返回一个函数,可以调用它来取消调度
- 返回数字 5 的中间件,因为出于某种原因我需要数字 5。
根据我链接这两个中间件的顺序,我的dispatch(action) 的结果将是延迟取消 fn 或数字 5。但是我如何获得这两个结果?
【问题讨论】:
-
这就是 Redux 中间件的设计方式。大多数中间件会简单地将它们从
next()收到的任何返回值传回,但是如果中间件愿意,它完全可以返回其他值。这主要归结为 JS 函数只返回一个值。 -
一个好的答案可能从 Redux Typescript 定义开始:github.com/reactjs/redux/blob/master/index.d.ts
-
作为参考,这是 Redux cmets 中提到任意返回值行为的评论,顺便说一句:github.com/reduxjs/redux/blob/…
标签: javascript redux middleware redux-promise