高阶组件(HOC)

1. 高阶函数的定义

至少满足下列条件之一:

  1. 接受一个或多个函数作为输入;
  2. 输出一个函数

2. 高阶组件的定义

接受一个组件为参数,返回值为一个新的组件的函数,形如:

function enhanceComponent(WrapperComponent){
  class NewComponent extend PurComponent{
    render(){  
      return <WrapperComponent {...this.props}/>
    }
  }
  NewComponent.dispalyName = 'Hoc';   //重命名用于在调试时显示
  return NewComponent
}

3. 反向继承

就是让新的组件继承自传进来的组件,这种做法react官方页不推荐。嵌套层级太深是一种灾难!

我们强烈建议你不要创建自己的组件基类。 在 React 组件中,代码重用的主要方式是组合而不是继承

function enhanceComponent(WrapperComponent){
  class NewComponent extend WrapperComponent{
    render(){
      return super.render()
    }
  }
  NewComponent.dispalyName = 'Hoc';   //重命名用于在调试时显示
  return NewComponent
}

缺点:因为HOC可以劫持props,在不遵守约定的情况下,可能会造成冲突。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容