需要代码解释Javascript将函数分配给常量

需要代码解释Javascript将函数分配给常量,javascript,react-redux,Javascript,React Redux,您好,我有以下基于React Redux的代码截取,不理解以下行: const List = connect(mapStateToProps)(ConnectedList); 我可以理解,如果一个函数看起来像: const List = connect(mapStateToProps); 但是,(ConnectedList)在这句话中有什么影响?它的技术名称是什么?发生了什么 全剪: import React from "react"; import { connect } from "r

您好,我有以下基于React Redux的代码截取,不理解以下行:

const List = connect(mapStateToProps)(ConnectedList);
我可以理解,如果一个函数看起来像:

const List = connect(mapStateToProps);
但是,(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;
从“React”导入React;
从“react redux”导入{connect};
常量mapStateToProps=状态=>{
返回{articles:state.articles};
};
const ConnectedList=({articles})=>(
    {articles.map(el=>(
  • {el.title}
  • ))}
); const List=connect(mapStateToProps)(ConnectedList); 导出默认列表;
connect(…)
返回一个函数(正如您已经意识到的),因此
connect(…)(ConnectedList)
调用
connect()
返回的函数,并将
ConnectedList
作为其参数

更长的版本是:

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

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

connect(MapStateTrops)

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

connect(mapstatetops)(ConnectedList)

connect()返回的HOC将向ConnectedList组件添加道具

您可以在此处看到文档:

connect()
返回更高阶的组件(封装组件的组件)

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

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


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

本文可能很有用:Thx!这正是我想要的。