[HarmonyOS][K老师]在鸿蒙中组件封装方法 —— 看我就够了 原创
头像 K老师 2026-01-01 13:53:33    发布
13767 浏览 336 点赞 0 收藏

大家好,我是 K 老师(华为 HarmonyOS 官方认证讲师)!深耕鸿蒙开发多年,做过数十个鸿蒙原生项目,今天专门给家人们拆解纯血鸿蒙星河版的组件封装核心逻辑 —— 不管是新手入门想复用代码,还是老鸟想优化项目维护性,看完这篇直接套用,不用再踩参数设计、逻辑抽象的坑~

一、先搞懂:组件封装到底为了啥?

组件的本质就是 “接收参数、返回 UI 的函数容器”,封装核心就解决两个问题:


  1. 复用:避免重复写相同 UI 和逻辑(比如项目里多次用到的按钮、列表项);
  2. 维护性:把复杂功能拆成独立组件,后续改 bug、加功能只动一个地方,不影响全局。

核心难点就一个:抽象 “合适的参数”,返回 “能用的 UI”—— 不用过度设计,也别漏了关键可配置项。

二、两种核心封装方法:新手老手都适配

组件封装没有玄学,就两种通用思路,掌握后所有场景都能套,咱们结合鸿蒙实战场景讲明白:

1. 自顶向下:先设计 API,再写逻辑(老手首选)

适合有明确需求、知道组件要适配多种场景的情况(比如封装一个全局通用的按钮组件)。


  • 步骤 1:先敲定组件 API 参数先想清楚:组件要接收哪些参数?是静态数据(props)、用户操作反馈(回调函数),还是自定义 UI 结构(builder 插槽)?举个例子:要封装鸿蒙的CustomButton组件,先设计 API:
  • 步骤 2:根据 API 反推逻辑实现有了 API 就有了明确目标 —— 比如根据isDisabled控制按钮点击态,根据bgColor设置样式,根据builder渲染图标,不用写冗余代码,精准匹配需求。

2. 自底向上:先实现功能,再抽参数(新手友好)

如果一开始没思路,先 “写死功能” 再优化,零压力上手:


  • 步骤 1:先写死核心功能比如要做一个鸿蒙的GoodsItem列表项,先直接把商品名称、图片、价格写死在组件里,先让 UI 和逻辑跑通(比如点击跳转商品详情)。
  • 步骤 2:提炼 “可变部分” 为参数功能跑通后,思考:哪些地方别人用的时候可能要改?
  • 总结:自底向上的核心就是 “把可变的东西抽象成参数”,不用一开始想太多,边写边优化。

三、组件参数分类:该用啥就用啥(鸿蒙实战版)

参数不用瞎设计,按场景对号入座,鸿蒙里常用的就三类:


参数类型适用场景鸿蒙实战例子
props传递静态数据(string/number/object/array)给列表项传goods: GoodsModel(商品数据)、控制组件显示隐藏的show: boolean
回调函数子组件通知父组件、传递内部数据按钮点击onClick: () => void、输入框内容变化onInputChange: (value: string) => void
builder传递自定义 UI 结构(组件标签组成的内容)给卡片组件传header: () => void(自定义头部 UI)、给列表项传action: () => void(自定义操作按钮组)

四、拓展:鸿蒙中 3 种常见组件封装类型

日常开发里,组件封装就分这三类,覆盖 90% 场景:

1. 无状态组件(UI 组件 / 木偶组件)

  • 核心特点:只负责显示,“给啥数据就渲染啥”,没有内部状态(不用@State);
  • 鸿蒙实战:商品列表项GoodsItem、标签组件Tag,只接收 props 和回调,自身不处理复杂逻辑;
  • 优势:轻量、复用性极强,维护成本低。

2. 无渲染组件(逻辑复用组件)

  • 核心特点:自身不渲染 UI,只封装可复用逻辑,UI 交给业务方实现;
  • 鸿蒙实战:封装OrientationDetector(横竖屏检测组件),内部通过@ohos.sensor监听设备方向,把 “横竖屏状态” 通过回调传给业务方,具体显示 “横屏提示文案” 还是 “切换布局”,由业务方用builder实现;
  • 优势:逻辑复用性拉满,比如横竖屏检测逻辑,多个页面都能共用。

3. 常规组件(状态 + 逻辑 + UI 一体化)

  • 核心特点:既有内部状态(比如@State isLoading: boolean),又有逻辑和 UI,是业务中最常见的类型;
  • 鸿蒙实战:带加载状态的SubmitButton,内部管理 “加载中 / 正常 / 禁用” 状态,接收text(按钮文字)、onSubmit(提交回调),点击后自动切换加载状态,业务方直接用,不用关心状态管理;
  • 优势:开箱即用,把复杂逻辑封装在内部,简化业务代码。

五、新手实战建议(K 老师踩坑总结)

  1. 新手先从 “自底向上” 入手,先实现功能再抽参数,不用怕一开始写死,优化比空想更高效;
  2. 参数别过度设计:比如一个按钮组件,不用搞十几个 props,保留 “核心可配置项” 即可(比如文字、颜色、点击事件),后续不够再加;
  3. 优先用鸿蒙的builder替代冗余 props:比如要支持自定义 UI,用builder比加多个showIconiconPosition等 props 更灵活;
  4. 无状态组件尽量纯展示:别在里面写复杂逻辑,保持 “输入输出一致”,复用性更强。

结尾互动

以上就是纯血鸿蒙星河版组件封装的完整思路,不管是简单 UI 复用,还是复杂逻辑封装,按这个方法来都能搞定~ 我是 K 老师,专注鸿蒙开发实战教学,后续会在 HarmonyKE 课堂 App 中同步组件封装的完整代码(可直接复制使用)。

如果你们在封装鸿蒙组件时遇到具体问题(比如builder传参报错、状态管理冲突),可以在评论区留言,下期专门拆解解决方案~ 关注我,持续更新鸿蒙干货,收藏本文,下次封装组件直接翻出来套!


©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
HarmonyOS

暂无评论数据

发布

头像

K老师

大家好我是K老师,这是我的个人介绍:鸿蒙先锋,鸿蒙开发者达人,鸿蒙应用架构师,HDG组织者,可0-1开发纯血鸿蒙应用,可0-1开发前端加鸿蒙混合应用,可0-1开发PC端鸿蒙应用。

118

帖子

0

提问

1412

粉丝

关注
热门推荐
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除
京ICP备:2022009079号-2
京公网安备:11010502051901号
ICP证:京B2-20230255