嗨,我截断了以下基于React-Redux的代码,不理解以下内容:
short
我会理解,如果函数看起来像这样,则会将一个函数分配给 List 常量:
const List = connect(mapStateToProps)(ConnectedList);
但是此语句中的(ConnectedList)有什么作用?发生的技术名称是什么?
完整片段:
const List = connect(mapStateToProps);
答案 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
。