HarmonyOS ArkUI 组件复用与父子组件通信
在鸿蒙ArkUI声明式开发体系中组件复用与父子组件通信是从“基础页面编写”进阶到“工程化项目开发”的核心分水岭。规范化开发通过复用机制精简代码、统一UI风格并通过组件通信实现页面数据驱动更新。一、前言为什么需要组件复用在开发电商首页、购物车、列表卡片等复杂页面时页面中存在大量重复的样式、重复的UI结构、统一的交互逻辑。如果全部手写会出现代码冗余、样式不统一、后期维护成本极高的问题。ArkUI 提供了一套完整的复用方案样式复用、UI结构复用、自定义组件复用配合父子组件数据通信机制能够实现高内聚、低耦合的前端开发模式也是企业级鸿蒙项目模块化开发的基础。二、三大复用装饰器对比与实战用法(1)Styles全局通用样式复用Styles 用于抽取多个组件通用的公共样式仅复用样式属性不复用UI结构。适用于全局统一的字体、颜色、边距、对齐等基础样式。核心特点无组件绑定、全局可调用、轻量化、仅样式复用。适用场景统一页面文本样式、统一按钮默认样式、统一卡片边距圆角。// 全局通用样式 Styles function commonText() { .fontSize(14) .fontColor(#333333) .margin(10) } Styles function cardBg() { .backgroundColor(Color.White) .borderRadius(12) .shadow(0.5, 10, Color.Gray) .padding(12) }(2)Extend专属组件样式扩展与 Styles 不同Extend绑定指定原生组件只能作用于目标组件可以扩展原生组件属性甚至绑定专属交互逻辑。核心特点组件专属、可扩展原生能力、比 Styles 功能性更强。适用场景自定义专属Text文本、专属Button按钮实现全局统一的定制化组件样式。// 专属Text组件扩展样式 Extend(Text) function titleText() { .fontSize(18) .fontWeight(FontWeight.Bold) .fontColor(#000) }(3)BuilderUI结构片段复用Builder 是 ArkUI 中复用UI结构的核心方案可以封装一段重复的组件结构支持传参、支持动态数据渲染是页面局部复用的最优解。同时搭配 BuilderParam 可以实现父组件向子组件注入自定义UI片段实现高灵活度的组件插槽效果极大提升组件的复用性和扩展性。适用场景列表卡片、通用标题栏、通用空数据页面、重复弹窗结构。// 封装通用卡片布局 Builder function GoodsCard(name: string, price: number) { Column() { Text(name).titleText() Text(¥${price}).fontColor(#f56c6c).fontSize(16) } .cardBg() .width(100%) }三、自定义组件与父子组件通信原理单纯的结构复用只能解决代码冗余问题想要实现数据驱动UI更新必须依靠组件状态通信机制。在模块化开发中页面会拆分为父组件与多个子组件数据由父组件统一管理子组件负责展示通过单向数据流实现状态统一管理。(1)核心通信装饰器Prop 单向传值Prop 用于实现父组件向子组件单向数据传递是项目中最常用的组件通信方式。父组件使用 State 定义状态变量通过传参传递给子组件的 Prop 变量。核心机制父组件数据更新 → 自动同步子组件 → 子组件UI自动刷新子组件无法修改父组件数据保证数据流单向可控避免状态混乱。(2)State 与 Prop 职责区分很多新手误区子组件定义大量 State 状态。实际工程规范中State仅用于组件内部私有状态不对外暴露Prop用于接收父组件传递的业务数据只读、可响应更新该机制保证了数据来源唯一是复杂页面状态不乱、易于维护的关键。3购物车案例子组件 GoodsItem.etsComponent export struct GoodsItem { // 接收父组件传值 Prop goodsName: string Prop goodsCount: number build() { Row() { Text(this.goodsName) Text(数量${this.goodsCount}) } .commonText() } }父组件页面使用 状态更新import { GoodsItem } from ./GoodsItem Entry Component struct Index { // 父组件唯一数据源 State name: string 鸿蒙学习手册 State count: number 1 build() { Column() { // 子组件绑定父状态 GoodsItem({ goodsName: this.name, goodsCount: this.count }) // 修改父状态子组件自动刷新 Button(增加数量) .onClick(() { this.count }) } .padding(20) } }四、总结三者复用方案各司其职样式复用统一界面、Builder 结构复用精简代码、自定义组件Prop通信实现业务解耦。掌握这套体系后已经具备开发中大型电商级复杂页面的能力摆脱新手式重复编码写出规范、简洁、可维护的鸿蒙代码。

相关新闻

大模型技术竞赛现状与未来趋势分析

大模型技术竞赛现状与未来趋势分析

1. 大模型技术竞赛现状全景扫描2023年全球科技行业最引人注目的现象,莫过于各大科技机构在大型语言模型(LLM)领域的军备竞赛。这场竞赛的激烈程度远超预期,呈现出三个典型特征:迭代速度指数级增长:GPT-4到G…

2026/7/21 5:34:07 阅读更多 →
Soft Prompt(软提示)

Soft Prompt(软提示)

Soft Prompt(软提示)可以理解为:不是人写出来的文字提示,而是一组由模型学习出来的向量提示。1. 先理解普通提示词我们平时输入给大模型的文字,例如:请根据用户历史记录推荐一部电影。这种能直接看到、读懂…

2026/7/21 5:33:06 阅读更多 →
别再瞎找了!盘点2026年顶流之选的的降AIGC软件

别再瞎找了!盘点2026年顶流之选的的降AIGC软件

轻松降低论文AI率在2026年已不再是天方夜谭。以下是2026年最炸裂、实测效果显著的降AIGC软件神器,覆盖AI痕迹消除、文本改写润色、降重优化、学术合规检测四大核心场景,帮你稳妥搞定毕业论文。 一、全流程王者:一站式搞定论文全链路 这类工具…

2026/7/21 5:33:06 阅读更多 →

最新新闻

如何用Layui和LogicFlow快速构建企业级工作流设计器?

如何用Layui和LogicFlow快速构建企业级工作流设计器?

如何用Layui和LogicFlow快速构建企业级工作流设计器? 【免费下载链接】ingenious-designer-layui 使用layui 构建的logicFlow 流程设计器 供大家参考学习 项目地址: https://gitcode.com/motion-code/ingenious-designer-layui 在当今快速发展的企业数字化转…

2026/7/21 15:17:22 阅读更多 →
黑盒智能体检测:如何从系统行为中识别目标导向性代理

黑盒智能体检测:如何从系统行为中识别目标导向性代理

1. 项目概述:当“智能体”悄然现身——我们如何确信系统里真有自主行为者? 你有没有过这种感觉:调试一段复杂的服务链路时,日志里突然出现一串异常但逻辑自洽的决策序列——不是随机错误,也不是预设规则能解释的路径&a…

2026/7/21 15:17:22 阅读更多 →
基于OpenCV DNN的高性能实时目标检测方案实现

基于OpenCV DNN的高性能实时目标检测方案实现

基于OpenCV DNN的高性能实时目标检测方案实现 【免费下载链接】opencv Open Source Computer Vision Library 项目地址: https://gitcode.com/GitHub_Trending/opencv31/opencv 在计算机视觉应用开发中,目标检测是最核心且最具挑战性的任务之一。传统深度学习…

2026/7/21 15:17:22 阅读更多 →
OpenSEO:把 SEO 工作台装进 MCP 的开源平替,值不值得换?

OpenSEO:把 SEO 工作台装进 MCP 的开源平替,值不值得换?

OpenSEO:把 SEO 工作台装进 MCP 的开源平替,值不值得换? 一句话定位:OpenSEO 不是在「重造一个 Ahrefs 数据库」,而是在「重新包装数据访问方式」——它本质上是 DataForSEO API 的一个开源前端 MCP 代理层&#xff0…

2026/7/21 15:17:22 阅读更多 →
具身智能体驱动的自我进化生产力教练

具身智能体驱动的自我进化生产力教练

1. 项目概述:这不是一个“AI助手”,而是一个会复盘、能记事、懂进化的生产力教练 你有没有过这种体验:每天打开待办清单,列得密密麻麻,结果到晚上一看,真正完成的不到三分之一?不是不努力&#…

2026/7/21 15:17:21 阅读更多 →
Auto-Editor终极指南:3步实现视频静默片段智能剪辑

Auto-Editor终极指南:3步实现视频静默片段智能剪辑

Auto-Editor终极指南:3步实现视频静默片段智能剪辑 【免费下载链接】auto-editor Effort free video editing! 项目地址: https://gitcode.com/gh_mirrors/au/auto-editor 你是否厌倦了手动剪辑视频中的静默片段?Auto-Editor正是你需要的解决方案…

2026/7/21 15:16:21 阅读更多 →

日新闻

Octane Render与C4D汉化版安装与优化指南

Octane Render与C4D汉化版安装与优化指南

1. Octane Render与C4D的黄金组合:为什么选择这个方案?在三维创作领域,渲染器的选择往往决定了作品的最终呈现质量和工作效率。作为Cinema 4D(C4D)用户,Octane Render的GPU加速特性与实时预览功能&#xff…

2026/7/21 0:00:19 阅读更多 →
GPMC接口设计:异步/同步模式与多路复用配置实战

GPMC接口设计:异步/同步模式与多路复用配置实战

1. GPMC接口设计:从硬件连接到软件配置的全局视角在嵌入式系统开发中,尤其是基于TI Sitara系列如AM263x这类高性能微控制器的项目里,外部存储器的扩展几乎是绕不开的一环。无论是存放大量非易失性代码的NOR Flash,还是作为高速数据…

2026/7/21 0:00:19 阅读更多 →
UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

1. 项目概述:UE5 GAS RPG被动技能的核心价值在UE5里用GAS(Gameplay Ability System)做RPG游戏,主动技能像是你手里的武器,按一下打一下,逻辑直接,反馈也快。但被动技能,它更像是你身…

2026/7/21 0:00:19 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻