reactjs - 这个语法是什么意思 export default connect(mapStatetoProps, mapDispatchToProps)(LandingComponent)
问题描述
我拥有的模块包含以下行。connect 似乎有两对括号。这是什么意思?
export default connect(mapStatetoProps, mapDispatchToProps).
(LandingComponent)
试图查找各种文档
import { connect } from 'react-redux'
import { LandingComponent } from './Landing'
const mapStatetoProps = state => {
return {}
}
const mapDispatchToProps = dispatch => {
return {}
}
export default connect(mapStatetoProps, mapDispatchToProps)
(LandingComponent)
期望理解语法的含义。
解决方案
第二组括号是因为connect(..., ...)
返回一个函数。这个函数是一个组件装饰器,这就是它与登陆组件类一起调用的原因。
如果你把它分开,它可能会变得更清楚:
const decorate = connect(mapStatetoProps, mapDispatchToProps);
const ReduxConnectedLandingComponent = decorate(LandingComponent);
export default ReduxConnectedLandingComponent;
在这种情况下decorate
,是一个接受单个组件并返回一个组件的函数。即,它采用普通组件并返回一个更智能的组件,该组件从层次结构中最近提供的商店中提取道具。
推荐阅读
- reactjs - 如何使用通过节点后端发送的 React 下载不同类型的文件类型?
- video - FFMPEG- 无法为输出文件 #0 写入标头(编解码器参数不正确?):不允许操作 初始化输出流时出错 0:2 --
- flutter - 现有集团的 BlocProvider.value 或 BlocListener.bloc?
- python - Python 3:比较两个数字并返回 -1、0 或 1
- javascript - `tsconfig` 中的“路径”没有从 node_modules 中获取声明,模块导入指向父目录
- javascript - 使用 vuex 传递变量端点?
- python - ROS Noetic (Ubuntu 20.04) - CV 桥不工作
- javascript - 有没有办法改变js中的子字符串?
- angular - 如何在按钮触发器上运行 combinelate
- java - 更改微调器中的值时更新文本字段的问题