什么是高阶组件

  • 本身就是一个函数,接收一个组件没返回一个组件
  • 重用代码,有很多时候组件需要用到同样的一个逻辑,为了提升性能和优化代码,我们可以把这份逻辑提出来,封装成为高阶组件
  • 不想触碰这些组件内部逻辑,这时候可以使用高阶组件,一个独立于原有组件的函数,可以产生新的组件
  • 高阶组件实现方式可以分两大类

    1. -代理方式的高阶组件<br /> -继承方式的高阶组件
  • 只继承 ```javascript import React from ‘react’ function Color(Component: any) {

    1. class ColorS extends React.Component {
    2. render() {
    3. return (
    4. <div style={{ color: 'red', fontSize: '20px' }}>
    5. <Component num={0} />
    6. </div>
    7. );
    8. }
    9. }
    10. return ColorS

    } export default Color

使用 Color(component)

  1. - 代理
  2. ```javascript
  3. import React from 'react'
  4. function Color(obj: any) {
  5. if (obj.add !== '/') {
  6. return (Component: any) => {
  7. class Ss extends React.Component {
  8. render() {
  9. return (
  10. <div>
  11. <h1>404</h1>
  12. </div>
  13. );
  14. }
  15. }
  16. return Ss
  17. }
  18. } else {
  19. return (Component: any) => {
  20. class ColorS extends React.Component {
  21. render() {
  22. return (
  23. <div style={{ color: 'red', fontSize: '20px' }}>
  24. <Component num={0} />
  25. </div>
  26. );
  27. }
  28. }
  29. return ColorS
  30. }
  31. }
  32. }
  33. export default Color
  34. 使用 Color(处理参数)(component)

怎么在高阶组件获取ref

  1. 父组件
  2. <Ee getRef={(e) => {
  3. console.log(e)
  4. }} />
  5. 高阶组件
  6. <Component num={0} {...this.props} />
  7. props传给子组件
  8. 使用高阶的组件
  9. constructor(props: any) {
  10. super(props)
  11. props.getRef(this)
  12. }