我是否总是需要从 redux 中间件返回一个值?

IT技术 javascript reactjs redux react-redux
2021-05-11 12:32:13

redux docs 中给出的示例中,似乎总是从中间件返回一些东西。但是,当我打电话next(action)并没有返回任何东西时,一切似乎都正常。

redux 源中,它似乎在调用dispatch每个中间件的返回值。

这让我相信它提供了一种在所有中间件运行后运行调度的可选方式。

有人可以确认我们是否必须始终从中间件返回一个值,如果是,为什么?

1个回答

我实际上就在前几天发布了关于这个的推文

store.dispatch()方法默认返回传入的操作。由于中间件管道环绕dispatch(),每个中间件可以在传入的途中更改通过管道传递的值,并更改正在传回的返回值。

许多中间件依赖于能够自己返回一个值,或者使用返回的返回值。例如,redux-thunk返回您从 thunk 函数返回的任何内容,这通常用于能够从 thunk 返回Promise,以便您可以链接dispatch(somePromiseThunk()).then( () => {}).

如果中间件调用next(action)但实际上并未从 返回值next(),则可能会破坏这些功能。具体行为将取决于您设置的中间件以及您订购它们的方式。

正因为如此,“正确”的做法是每个 Redux 中间件都应该 return next(action)默认,除非它明确想要改变返回值行为这确保了将中间件组合在一起的最佳兼容性和能力。