要在redux中定义中间件,我们需要编写一系列函数,如:
const middleware = middlewareApi => next => action => {
//logic here
}
问题是这个签名是否是:
(next)
数组的感觉很舒服 - 论证函数如Can TFS Pending Changes show files that are truly changed like SourceGear Vault? 是否可以用以下签名替换(当然还有对Redux代码的相应更改):
const middleware = (middlewareApi, next) => action => {
//logic here
}
我意识到结果并不完全等同于前者,但似乎没有对applyMiddleware
案例产生任何影响。这种语法的好处是让IMO不那么容易混淆。
答案 0 :(得分:1)
我们有一个新的"Design Decisions" FAQ页面可以解答这个问题。 (文档尚未使用新内容重新发布,因此我将链接Markdown文件。)
正如其他评论所提到的:currying是一种标准的函数式编程技术,在这种情况下,它有助于提供闭包,中间件作者可以存储需要在中间件生命周期内访问的值。
请参阅常见问题解答条目,以获取有关该主题的先前讨论的链接。