高阶组件 vs 封装组件

高阶组件(HOC) vs 包裹组件(Wrapped Component)

先给用例

function HOC(Component) {
  return class extends React.Component {
    name: string = "";
    render() {
      return (
        <>
          <Component addtionalProp={name} />
          <button type="button">Click Me</button>
        </>
      );
    }
  };
}

function WrapperComponent(props) {
  let name: string = "";
  return (
    <>
      {React.cloneElement(props.children, { addtionalProps: name })}
      <button type="button">Click Me</button>
    </>
  );
}

结论
相同点:

  • 它们都是给组件添加一些额外的功能

不同点:

  • HOC 添加的功能对于 Component 而言是可知的,或者说,HOC 提供的信息是 Component 定义里面的某个属性,只是,Component 不关心它的来源,是来自 HOC 还是来自于业务代码都无所谓。封装组建(Wrapped Component),添加的内容一般组件是完全不知道的。
  • HOC 添加的功能是在 Component 构建之前,而 WrappedComponent,则是在组件构建之后,通过 React.cloneElement 重新创建。效率更低。
posted @   kongshu  阅读(97)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示