我的回答
HOC, 一个函数接收React组件, 返回一个新的React组件, 主要适用于组件的复用
参考回答
高阶组件
官方解释:高阶组件(HOC)是React中用于复用组件逻辑的一种高级技巧。HOC自身不是React API的一部分,它是一种基于React的组合特性而形成的设计模式
- 高阶组件(HOC)就是一个函数,且该函数接受一个组件作为参数,并返回一个新的组件,他只是一个组件的设计模式,这种设计模式是由react自身的组合性质必然产生的。我们称他们为纯组件,因为它们可以接受任何动态提供的子组件,但它们不会修改或复制其输入组件的任何行为。
//hoc的定义
function withSubscription(WrappedComponent,selectData){
return class extends React.Component{
constructor(props){
super(props);
this.state={
data:selectData(DataSource,props)
}
};
// 一些通用的逻辑处理
render(){
// 使用新数据渲染被包装的组件
return <WrappedComponent data={this.state.data} {...this.props} />;
}
};
//使用
const BlogPostWithSubscription=withSubscription(BlogPost,(DataSource,props)=>DataSource.getBlogPost(props.id))
}
1.hoc的优缺点
- 优点:逻辑复用,不影响被包裹组件的内部逻辑
- 缺点:hoc传递给被包裹组件的props容易和被包裹后的组件重名,进而被覆盖
2.适用场景:
- 代码复用,逻辑抽象
- 渲染劫持
- State抽象和更改
- Props更改