需要代码说明将功能分配给常量的Javascript

时间:2018-08-15 12:20:55

标签: javascript react-redux

嗨,我截断了以下基于React-Redux的代码,不理解以下内容:

short

我会理解,如果函数看起来像这样,则会将一个函数分配给 List 常量:

const List = connect(mapStateToProps)(ConnectedList);

但是此语句中的(ConnectedList)有什么作用?发生的技术名称是什么?


完整片段:

const List = connect(mapStateToProps);

3 个答案:

答案 0 :(得分:5)

connect(...)返回一个函数(您已经意识到),因此connect(...)(ConnectedList)connect()作为参数调用ConnectedList返回的函数。

更长的版本是:

const tmp = connect(mapStateToProps);
const List = tmp(ConnectedList);

因为您要求提供技术名称:通常,一个返回另一个函数的函数称为高阶函数。

答案 1 :(得分:2)

connect(mapStateToProps);

返回高阶React组件(HOC)。在这种情况下,connect将在mapStateToProps纯函数上注入您正在映射的状态。 HOC的目的是组成另一个组件,这就是为什么您需要第二部分的原因:

connect(mapStateToProps)(ConnectedList);

connect()返回的HOC会将道具添加到ConnectedList组件。

您可以在此处查看文档:{​​{3}}

答案 2 :(得分:1)

connect()返回一个高阶组件(包裹组件的组件)。

此函数负责订阅应用程序的redux存储中的更改,每当检测到存储更改时,它将调用您提供的mapStateToProps函数,将新存储状态传递给该函数。 从mapStateToProps返回的值将被传递到您要包装为props的组件。

这将使组件连接到redux存储,并因此命名。

顺便说一句,我将包装的组件命名为List,将从connect()函数返回的组件命名为ConnectedList