redux 中间件函数级联要这么精巧吗?
Should redux middleware function cascade be so sophisticated?
要在 redux 中定义中间件,我们需要编写一系列函数,例如:
const middleware = middlewareApi => next => action => {
//logic here
}
问题是这个签名是不是:
- 任何必需品强加/打开任何机会;
- 只是 Redux 实现细节的暗示/开发人员可以轻松地操作
(next)
参数函数数组,例如 here
是否可以用下面的签名替换(当然要对 Redux 的代码进行相应的更改):
const middleware = (middlewareApi, next) => action => {
//logic here
}
我意识到结果与前一个结果并不完全相同,但似乎对 applyMiddleware
情况没有任何影响。这种语法的好处是减少了 IMO 的混淆。
我们有一个新的 "Design Decisions" FAQ 页面可以回答这个问题。 (文档尚未重新发布新内容,因此我正在链接 Markdown 文件。)
正如已经提到的其他评论:currying 是一种标准的函数式编程技术,在这种情况下,它有助于提供闭包,中间件作者可以在其中存储需要在中间件的整个生命周期中访问的值。
请参阅常见问题解答条目以获取有关该主题的先前讨论的链接。
要在 redux 中定义中间件,我们需要编写一系列函数,例如:
const middleware = middlewareApi => next => action => {
//logic here
}
问题是这个签名是不是:
- 任何必需品强加/打开任何机会;
- 只是 Redux 实现细节的暗示/开发人员可以轻松地操作
(next)
参数函数数组,例如 here
是否可以用下面的签名替换(当然要对 Redux 的代码进行相应的更改):
const middleware = (middlewareApi, next) => action => {
//logic here
}
我意识到结果与前一个结果并不完全相同,但似乎对 applyMiddleware
情况没有任何影响。这种语法的好处是减少了 IMO 的混淆。
我们有一个新的 "Design Decisions" FAQ 页面可以回答这个问题。 (文档尚未重新发布新内容,因此我正在链接 Markdown 文件。)
正如已经提到的其他评论:currying 是一种标准的函数式编程技术,在这种情况下,它有助于提供闭包,中间件作者可以在其中存储需要在中间件的整个生命周期中访问的值。
请参阅常见问题解答条目以获取有关该主题的先前讨论的链接。