reactjs - ES6 (React) - 自调用函数?

标签 reactjs function ecmascript-6 redux

有人可以向我解释下面的代码吗?我明白它的作用,但语法很奇怪,它完成了什么?

当我有:

export default ComponentName;

这很简单,但是这个:

export default connect(mapStateToProps)(ComponentName);

它到底是做什么的?它是 ES6-ish 语法吗?它看起来像是带有参数的自调用函数,但是这些参数是如何工作的呢?我难以理解的部分是:

connect(mapStateToProps)(ComponentName);

第一部分 connect(mapStateToProps) 很简单 - 它只是一个以 mapStateToProps 为参数的 connect 函数,但处理的是什么(组件名称)?为什么要导出自调用函数?为什么我们必须在这里传递组件名称?

最佳答案

您基本上是将一个组件包装在一个高阶组件中。

来自React docs :

A higher-order component is a function that takes a component and returns a new component.

当您调用 connect(mapStateToProps) 时,它会返回一个函数。该函数接受一个组件作为参数并返回一个新组件,该组件与您传递给它的组件相同,只是新组件现在将包含来自 Redux 存储的数据。

因此,通过附加 (ComponentName)connect(mapStateToProps)(ComponentName),您实际上并不是在导出一个函数,您是在调用一个函数并导出它返回的内容这是一个新组件。

关于reactjs - ES6 (React) - 自调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48828125/

相关文章:

javascript - 在 componentDidMount 上触发转换

reactjs - 如何使用 React Material-UI 创建 2 列表单?

Javascript - 获取对象属性值而不是引用

reactjs - React/Redux/后端设置以获得实时增量进度

reactjs - 类型 'setTabChange' 上不存在属性 'never'。 (React hooks Typescript) 使用 ref

javascript - 我如何在类组件中使用 bool 状态的可重用函数

jquery - "removeAttribute is not a function"错误信息

javascript - JS - 从对象中删除键

javascript - 如果用 var 重新声明将对现有变量产生影响

javascript - 如何让循环动画停止和恢复?