当前位置: 首页 > news >正文

何为高阶组件(higherordercomponent) ?

定义

高阶组件(Higher-Order Component,简称 HOC)
是一个 接受组件作为参数,并返回一个新组件的函数。

简单来说:

HOC = 组件的“加工厂”
它给组件“增强功能”,返回一个功能更强的组件。

核心公式

const EnhancedComponent = higherOrderComponent(WrappedComponent);
  • WrappedComponent:被包裹的原始组件

  • higherOrderComponent:高阶组件函数

  • EnhancedComponent:增强后的新组件

通俗类比

假设你有一个普通人 人类A,
然后有一个函数叫 withSuperPower(人),它会给人加上“飞行”能力。

const 超人 = withSuperPower(人类A);

这个 withSuperPower 就是高阶函数。
在 React 中,这个理念应用在组件上,就是 高阶组件。

代码示例

打印日志的高阶组件
function withLogger(WrappedComponent) {return function EnhancedComponent(props) {console.log('Props:', props);return <WrappedComponent {...props} />;};
}

使用:

function Hello(props) {return <h1>Hello, {props.name}</h1>;
}const HelloWithLogger = withLogger(Hello);

渲染时:

<HelloWithLogger name="Alice" />

输出:

Props: { name: 'Alice' }
Hello, Alice
鉴权(Auth)高阶组件
function withAuth(WrappedComponent) {return function AuthenticatedComponent(props) {const isLogin = localStorage.getItem('token');if (!isLogin) {return <div>请先登录</div>;}return <WrappedComponent {...props} />;};
}

使用:

const ProfilePage = withAuth(UserProfile);

特点总结

特点 说明
输入 一个组件
输出 一个新组件
作用 逻辑复用、增强组件功能
常见应用 权限控制、日志打印、埋点统计、数据注入等
对比 Hooks HOC 是类组件时代常用的逻辑复用手段,函数组件中更多用自定义 Hooks 代替

注意事项

  • 不要在 render 里使用 HOC(会导致组件频繁重新创建)

  • 拷贝静态方法时需要手动处理(例如使用 hoist-non-react-statics)

  • 命名规范:通常以 with 开头(例如:withRouter, withAuth)

一句话总结:

高阶组件(HOC)是一个以组件为输入,返回新组件的函数,
主要用于逻辑复用与功能增强。

http://www.hskmm.com/?act=detail&tid=40020

相关文章:

  • CentOS下Docker部署mysql8.0
  • 杭州AI优化企业:国内GEO领域技术标杆 - 二当家
  • 构建定时 Agent,基于 Spring AI Alibaba 实现自主运行的人机协同智能 Agent
  • 《代码大全2》观后感(一):从“写代码”到“做工程”的思维跃迁
  • 2025 年空气悬浮鼓风机,磁悬浮鼓风机,章鼓鼓风机厂家最新推荐,产能、专利、环保三维数据透视!
  • 洞悉过往,一目了然:浅述视频融合平台EasyCVR如何实现海量视频录像的智能检索与高效回看
  • Node-RED正在颠覆整个物联网网关行业
  • 2025 年进口螺杆泵,萨伯特螺杆泵,污泥螺杆泵厂家最新推荐,实力品牌深度解析采购无忧之选!
  • 单体架构中的事件驱动架构:Java应用程序的渐进式重构
  • Xamarin.From ContentView 自定义标题栏
  • 快克品牌焊台
  • 2025 年 10 月动轨式格栅、动轨式格栅除污机厂家最新推荐,产能、专利、环保三维数据透视
  • 20232411 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 构建强化版 Squoosh:基于 libimagequant-wasm 的高性能本地图片压缩方案
  • iOS混淆实战用多工具组合把IPA加固做成可复用的工程能力(iOS混淆 IPA加固 无源码混淆
  • java(2)-编写一个程序“Hello World!”
  • 2025 年 10 月 wms 仓库管理系统,仓储管理系统 wms 公司最新推荐,技术实力与市场口碑深度解析!
  • 状态迁移与场景法:搞定复杂业务流测试的利器
  • 2025 年云进销存,电商进销存公司最新推荐,聚焦跨平台能力与售后体系的实用指南!
  • 2025 年 10 月进销存系统,仓库进销存,仓库进销存管理系统公司最新推荐,技术实力与市场口碑深度解析!
  • 2025锻造成型/多向锻造/锚杆托盘成型/粉末成型/拉伸成型/玻璃钢成型/复合材料成型/液压机推荐榜:山东威力重工机床领衔,工业 / 定制化液压设备优质厂家精选
  • VMware虚拟机安装ubuntu操作系统--保姆级教程,小白也能一次过(未使用VMware自带的ubuntu)
  • CF53E Dead Ends
  • DBeaver-设置默认自动提交。(执行删除或者Truncate命令,但是没有删除表或者清空数据)
  • 人工智能背景下的智慧规划建设方案
  • 2025 年 10 月 OZON ERP,Temu ERP,Shopee ERP 公司最新推荐,聚焦跨平台能力与售后体系的实用指南
  • 2025 年 10 月进销存 erp,供应链 erp,零售 ERP 公司最新推荐,聚焦资质、案例、售后的五家机构深度解读!
  • MM-SAM
  • 2025 年 10 月 PE 管道、PE 管材、HDPE 管、PE 管材管件厂家最新推荐,产能、专利、环保三维数据透视
  • 2025 年给水用 pe 管,钢丝网骨架 pe 管,大口径 pe 管厂家最新推荐,实力品牌深度解析采购无忧之选!