And*_*ild 0 javascript react-redux
嗨,我有以下基于React-Redux的代码剪断,不明白以下行:
const List = connect(mapStateToProps)(ConnectedList);
Run Code Online (Sandbox Code Playgroud)
我会理解一个函数被分配给List常量,如果它看起来像:
const List = connect(mapStateToProps);
Run Code Online (Sandbox Code Playgroud)
但是这个声明中的(ConnectedList)会产生什么影响?发生了什么的技术名称?
完全剪断:
import React from "react";
import { connect } from "react-redux";
const mapStateToProps = state => {
return { articles: state.articles };
};
const ConnectedList = ({ articles }) => (
<ul className="list-group list-group-flush">
{articles.map(el => (
<li className="list-group-item" key={el.id}>
{el.title}
</li>
))}
</ul>
);
const List = connect(mapStateToProps)(ConnectedList);
export default List;
Run Code Online (Sandbox Code Playgroud)
connect(...)返回一个函数(正如您已经意识到的那样),因此connect(...)(ConnectedList)调用connect()with 返回的函数ConnectedList作为其参数.
更长的版本是:
const tmp = connect(mapStateToProps);
const List = tmp(ConnectedList);
Run Code Online (Sandbox Code Playgroud)
由于您要求提供技术名称:通常返回另一个函数的函数称为高阶函数.