高阶组件是一个函数,而不是一个组件。

定义

接受一个或多个组件作为参数并且返回一个组件。它并不是一个组件,而是一个函数。

高阶组件的两个形式









这里的super指高阶组件,item指被包裹的组件

属性代理 反向继承
继承的组件 Component WrappedComponent
挂载时生命周期执行 1、super componentWillMount 2、super render 3、item componentWillMount 4、item render 5、item componentDidMount 6、super componentDidMount 1、super componentWillMount 2、super render 3、item render 4、super componentDidMount
卸载时生命周期执行 1、item componentWillUnmount

2、super componentWillUnmount

1、super componentWillUnmount
特性 1、可以给WrappedComponent添加新的props属性;
2、利用props和函数把state抽离出来;
3、ref访问组件实例
1、编辑WrappedComponent中的state(非常不推荐);
2、渲染劫持

缺陷

  • 新组件没有原始组件的静态方法
  • refs属性不能透传
  • 反向继承不能保证完整的子组件树被解析