高阶组件是一个函数,而不是一个组件。
定义
接受一个或多个组件作为参数并且返回一个组件。它并不是一个组件,而是一个函数。
高阶组件的两个形式
属性代理 | 反向继承 | |
---|---|---|
继承的组件 | 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属性不能透传
- 反向继承不能保证完整的子组件树被解析