React 高阶组件(HOC)

React 高阶组件(HOC)

高阶组件不是 React API 的一部分,而是一种用来复用组件逻辑而衍生出来的一种技术。

什么是高阶组件

高阶组件就是一个函数,且该函数接受一个组件作为参数,并返回一个新的组件。基本上,这是从 React 的组成性质派生的一种模式,我们称它们为"纯"组件, 因为它们可以接受任何动态提供的子组件,但它们不会修改或复制其输入组件的任何行为。

简言之, 高阶组件:

  • 是一个函数
  • 传入一个组件
  • 返回一个新组件

Example: 给任意组件添加 Tooltip

这里通过一个例子演示高阶组件的用法。

  1. 高阶组件核心代码
javascript 复制代码
export const withTooltip = (Component: React.FunctionComponent) => {
  return ({ ...props }: any) => {
    return (
      <Flex gap={1}>
        <Component {...props} />
        <Tooltip description="这是提示内容">
          <IconPark type="info" />
        </Tooltip>
      </Flex>
    )
  }
}
  1. 传入需要添加 Tooltip 的组件
javascript 复制代码
const TypographyWithToolTip = withTooltip(Typography)
  1. 使用上一步返回的高阶组件
javascript 复制代码
<TypographyWithToolTip>111</TypographyWithToolTip>

效果展示:

相关推荐
奇奇怪怪的问题17 小时前
学习ts笔记(二):属性修饰符,泛型,接口
前端·typescript
明月_清风17 小时前
全面了解 Vercel:前端开发者的高效武器库与实战指南
前端·next.js
NiceCloud喜云17 小时前
Claude API PDF 文档问答实战:从原生解析到分页引用的完整方案
java·服务器·前端·网络·数据库·人工智能·pdf
东方小月18 小时前
vibecoding实战:用 Claude Code 从0到1开发一个 Claude Code
前端·人工智能·架构
marsh020618 小时前
54 openclaw钩子函数使用:在框架生命周期中注入自定义逻辑
java·前端·spring
TechExplorer36518 小时前
npm install 日志目录
前端·npm·node.js
笔优站长19 小时前
从 Vue 2 到 Vue 3:我把 vue-aliplayer-v2 重构成了一个更现代的阿里云播放器组件
前端·vue.js
蓝银草同学19 小时前
新手指南:快速理清独立仓库 Java 8 多模块项目依赖并运行
前端·后端
蓝银草同学19 小时前
前端转 Java,第一篇看懂 pom.xml:Maven 依赖管理从入门到不懵
前端·后端
彦为君19 小时前
JavaSE-11-网络编程(详细版)
java·前端·网络·ai·ai编程