在redux docs 中给出的示例中,似乎总是从中间件返回一些东西。但是,当我打电话next(action)
并没有返回任何东西时,一切似乎都正常。
在redux 源中,它似乎在调用dispatch
每个中间件的返回值。
这让我相信它提供了一种在所有中间件运行后运行调度的可选方式。
有人可以确认我们是否必须始终从中间件返回一个值,如果是,为什么?
在redux docs 中给出的示例中,似乎总是从中间件返回一些东西。但是,当我打电话next(action)
并没有返回任何东西时,一切似乎都正常。
在redux 源中,它似乎在调用dispatch
每个中间件的返回值。
这让我相信它提供了一种在所有中间件运行后运行调度的可选方式。
有人可以确认我们是否必须始终从中间件返回一个值,如果是,为什么?
我实际上就在前几天发布了关于这个的推文。
该store.dispatch()
方法默认返回传入的操作。由于中间件管道环绕dispatch()
,每个中间件可以在传入的途中更改通过管道传递的值,并更改正在传回的返回值。
许多中间件依赖于能够自己返回一个值,或者使用返回的返回值。例如,redux-thunk
返回您从 thunk 函数返回的任何内容,这通常用于能够从 thunk 返回Promise,以便您可以链接dispatch(somePromiseThunk()).then( () => {})
.
如果中间件调用next(action)
但实际上并未从 返回值next()
,则可能会破坏这些功能。具体行为将取决于您设置的中间件以及您订购它们的方式。
正因为如此,“正确”的做法是每个 Redux 中间件都应该 return next(action)
默认,除非它明确想要改变返回值行为。这确保了将中间件组合在一起的最佳兼容性和能力。