在redux docs中给出的示例中,似乎总是会从中间件返回一些内容。但是,当我打电话给next(action)
并且什么都没有返回时,一切似乎都正常。
在redux source中,似乎在每个中间件的返回值上调用dispatch
。
这让我相信它提供了一种在所有中间件运行后运行调度的可选方法。
有人可以确认我们是否必须始终从中间件返回值,如果是这样,为什么?
答案 0 :(得分:14)
我实际上是here。
默认情况下,store.dispatch()
方法返回传入的操作。由于中间件管道包裹dispatch()
,每个中间件都可以改变通过管道传递的值,并改变传回的返回值。
许多中间件依赖于能够自己返回值,还是使用返回值返回。例如,redux-thunk
返回从thunk函数返回的任何内容,这通常用于从thunk返回promise,以便链接dispatch(somePromiseThunk()).then( () => {})
。
如果中间件调用next(action)
但实际上并未从next()
返回值,则可能会破坏这些功能。具体行为取决于您设置的中间件,以及如何订购它们。
因此,"正确"实践是默认情况下每个Redux中间件应该 return next(action)
,除非它明确想要更改返回值行为。这确保了最佳兼容性和组合中间件的能力。