0

要在 redux 中定义中间件,我们需要编写一系列函数,例如:

const middleware = middlewareApi => next => action => {
    //logic here
}

问题是这个签名是否是:

  • 由任何必需品强加/打开任何机会;
  • 只是 Redux 实现细节的含义/开发人员可以舒适地操作一系列(next)-argumented 函数,如这里

是否可以将其替换为以下签名(当然要对 Redux 的代码进行相应的更改):

const middleware = (middlewareApi, next) => action => {
    //logic here
}

我意识到结果并不完全等同于前一个,但似乎对applyMiddleware案件没有任何影响。这种语法的好处是不太容易混淆 IMO。

4

1 回答 1

1

我们有一个新的“设计决策”常见问题解答页面来回答这个问题。(文档尚未与新内容一起重新发布,因此我正在链接 Markdown 文件。)

正如已经提到的其他评论:currying 是一种标准的函数式编程技术,在这种情况下,它有助于提供闭包,中间件作者可以在其中存储需要在中间件生命周期内访问的值。

请参阅常见问题条目以获取有关该主题的先前讨论的链接。

于 2017-10-16T19:55:48.340 回答