什么是高阶组件
- 本身就是一个函数,接收一个组件没返回一个组件
- 重用代码,有很多时候组件需要用到同样的一个逻辑,为了提升性能和优化代码,我们可以把这份逻辑提出来,封装成为高阶组件
- 不想触碰这些组件内部逻辑,这时候可以使用高阶组件,一个独立于原有组件的函数,可以产生新的组件
高阶组件实现方式可以分两大类
-代理方式的高阶组件<br /> -继承方式的高阶组件
只继承 ```javascript import React from ‘react’ function Color(Component: any) {
class ColorS extends React.Component {render() {return (<div style={{ color: 'red', fontSize: '20px' }}><Component num={0} /></div>);}}return ColorS
} export default Color
使用 Color(component)
- 代理```javascriptimport React from 'react'function Color(obj: any) {if (obj.add !== '/') {return (Component: any) => {class Ss extends React.Component {render() {return (<div><h1>404</h1></div>);}}return Ss}} else {return (Component: any) => {class ColorS extends React.Component {render() {return (<div style={{ color: 'red', fontSize: '20px' }}><Component num={0} /></div>);}}return ColorS}}}export default Color使用 Color(处理参数)(component)
怎么在高阶组件获取ref
父组件<Ee getRef={(e) => {console.log(e)}} />高阶组件<Component num={0} {...this.props} />把props传给子组件使用高阶的组件constructor(props: any) {super(props)props.getRef(this)}
