HarmonyOS应用开发实战(基础篇)Day11 -《组件复用》 📅 发布时间:2026/7/9 22:00:13 👁️ 浏览次数: 组件复用组件复用提取到文件夹中独立组件实现步骤使用方式优势与适用场景Builder自定义构建器实现方式使用方式优势与局限两种方式对比总结最佳实践建议组件复用在鸿蒙应用开发过程中随着项目规模扩大页面逻辑和 UI 结构会变得日益复杂。若将所有代码写在单一组件中不仅会导致可读性下降还会造成重复代码泛滥严重违背“DRYDon’t Repeat Yourself”原则。因此组件复用成为提升开发效率、保障代码一致性、降低维护成本的关键手段。通过将通用 UI 片段如用户卡片、商品项、消息气泡等抽取为独立单元我们可以在多个页面或列表中无缝复用实现“一次编写多处使用”。正如你在开发中可能遇到的困惑“这个 UI 片段散落在多个地方修改起来太麻烦”——这正是组件化要解决的核心问题。复用目标提高代码可维护性减少冗余逻辑支持团队协作UI 与逻辑解耦便于单元测试在 ArkTS 中官方提供了两种主流的组件复用方式抽取为独立组件文件使用ComponentProp定义为自定义构建器使用Builder下面我们将分别详解这两种方式的实现细节、适用场景与注意事项。提取到文件夹中独立组件这是最常用、最推荐的组件复用方式尤其适用于跨页面、跨模块的 UI 单元。其核心思想是将一段 UI 逻辑封装成一个可接收外部数据的独立组件并通过Prop装饰器实现单向数据流父 → 子。实现步骤在项目目录下创建专门的组件文件夹如components或ui新建.ets文件如UserList.ets使用Component声明组件并通过Prop接收外部传入的数据在需要使用的地方导入并调用该组件。// src/main/ets/components/UserList.etsimport{User}from../common/UserDemoComponentexportstruct UserList{Propitem:User;// 接收父组件传入的用户对象build(){Column(){Text(姓名this.item.name).fontSize(16).fontWeight(FontWeight.Bold)Text(邮箱this.item.email).fontSize(14).fontColor(#666)}.width(100%).padding(10).backgroundColor(#f9f9f9).borderRadius(8)}}关键点解析Prop表示该属性由父组件传入子组件不可修改单向绑定确保数据流清晰export struct必须导出才能被其他文件导入路径规范建议将组件集中管理如src/main/ets/components/便于查找与维护。使用方式在父组件中导入UserList并通过大括号{}传递参数这是 ArkTS 的语法要求// 在 Index.ets 中使用import{UserList}from../components/UserList// ...ForEach(this.users,(item:User){UserList({item:item})// 注意必须用 { } 包裹参数})⚠️常见错误若写成UserList(item)无大括号编译器会报错因为 ArkTS 要求具名参数必须显式声明。优势与适用场景✅高内聚低耦合组件内部逻辑封闭仅通过Prop暴露接口✅支持 TypeScript 类型检查传参时自动校验类型✅可跨页面复用如用户卡片既可用于“联系人列表”也可用于“聊天详情”✅便于样式统一修改UserList.ets即可全局生效。Builder自定义构建器Builder是 ArkTS 提供的一种轻量级 UI 复用机制适用于同一组件内部的 UI 片段提取。它本质上是一个带参数的函数返回一段 UI 描述不创建新的组件实例性能开销极低。实现方式在当前组件内部定义Builder方法// 在 Index.ets 内部BuildermusicBuildList(item:User){Column(){Text(姓名item.name).fontSize(16)Text(邮箱item.email).fontSize(14)}.width(100%).padding(10).margin(5)}使用方式直接在build()中调用无需导入ForEach(this.users,(item:User){this.musicBuildList(item)// 直接调用像函数一样})优势与局限优势局限✅ 语法简洁无额外文件❌ 仅限当前组件内部使用✅ 零性能开销无组件实例化❌ 无法跨页面复用✅ 适合简单、高频的 UI 片段❌ 不支持State、Prop等状态管理使用建议若某段 UI仅在一个页面内重复出现如列表项、表单项优先使用Builder若需跨页面共享或包含复杂交互逻辑如点击事件、状态变化则应使用独立组件。两种方式对比总结特性独立组件ComponentProp自定义构建器Builder作用域全局可跨页面仅当前组件内部数据传递通过Prop单向函数参数值传递状态管理支持State,Link等不支持性能开销有组件实例化成本几乎为零适用场景通用 UI 单元卡片、按钮、弹窗页面内重复 UI 片段工程结构需新建文件目录清晰代码内联快速实现最佳实践建议命名规范独立组件PascalCase如UserCard.etsBuildercamelCase如renderUserItem目录组织src/main/ets/ ├── components/ # 通用组件 │ ├── UserCard.ets │ └── ProductItem.ets ├── pages/ # 页面组件 └── common/ # 工具类、模型避免过度拆分若某 UI 片段仅使用一次无需强行抽取保持代码简洁性更重要。类型安全无论哪种方式都应为参数添加 TypeScript 类型注解如item: User。通过合理运用独立组件与自定义构建器开发者可以构建出高内聚、低耦合、易维护的鸿蒙应用架构大幅提升开发效率与代码质量。
[SAP] SAP MM模块学习路径 SAP MM模块学习路径如下所示: 1.SAP MM模块简介 2.SAP MM模块组织结构 3.SAP MM模块数据 4.SAP MM采购流程 持续更新中 2026/7/6 7:03:27
基于SpringBoot+Vue的二手数码产品回收与交易平台设计与实现 前言 🌞博主介绍:✌CSDN特邀作者、全栈领域优质创作者、10年IT从业经验、码云/掘金/知乎/B站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战,以及程序定制化开发、文档编写、答疑辅导等。✌… 2026/7/4 4:44:51
2026年AI大模型应用开发保姆级教程:从入门到精通,这一篇开始 🚀 AI大模型应用开发:从入门到精通的体系化学习路线 (2026版) 摘要: 随着ChatGPT、文心一言、通义千问等大模型的爆发,掌握AI大模型应用开发已成为开发者进阶、获取高薪的黄金技能!本文由深耕AI领域的CSDN专家撰写&… 2026/7/8 9:46:04
深度解析:InsightFace_Pytorch框架下的人脸识别技术架构演进与选型策略 深度解析:InsightFace_Pytorch框架下的人脸识别技术架构演进与选型策略 【免费下载链接】InsightFace_Pytorch Pytorch0.4.1 codes for InsightFace 项目地址: https://gitcode.com/gh_mirrors/in/InsightFace_Pytorch 在人工智能技术快速发展的今天… 2026/7/9 21:59:06
OpenCore Simplify:3分钟快速创建完美黑苹果EFI配置的终极方案 OpenCore Simplify:3分钟快速创建完美黑苹果EFI配置的终极方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpenCore Simplify 是一款革… 2026/7/9 21:57:06
信奥P1911排兵布阵:状态压缩动态规划算法详解与C++实现 1. 项目概述与核心思路拆解看到“打卡信奥刷题(2511)用C实现信奥 P1911 L 国的战斗之排兵布阵”这个标题,很多信奥(信息学奥林匹克)的选手或者C算法爱好者可能会心一笑。这不仅仅是一道题,它背后代表了一类… 2026/7/9 21:55:05
直流减速电机位置环 PD 控制:为何舍弃 I 项?3 种场景对比与代码实现 直流减速电机位置环PD控制:为何舍弃I项?3种场景对比与代码实现在工业自动化、机器人控制等领域,直流减速电机的位置控制是一个基础但至关重要的环节。工程师们常常发现,在位置环控制中,PD(比例-微分&#x… 2026/7/9 21:55:05
Unity抛物线模拟:从数学公式到精准投掷物轨迹实现 1. 项目概述:为什么我们需要自己模拟抛物线?在Unity里做游戏,尤其是涉及到弓箭、投石车、手榴弹或者魔法飞弹这类需要抛物线轨迹的玩意儿,很多开发者第一反应就是:直接用Rigidbody加个力,让物理引擎去算不就… 2026/7/9 21:53:05
SRC 漏洞挖掘零基础教程:平台注册、信息搜集、漏洞提交全套实操 2026 年国内 SRC 产业持续规范化发展,各大互联网企业、政企单位漏洞响应平台全面扩容,依托合规漏洞挖掘发放赏金已经成为网络安全新手最稳妥的变现途径。补天SRC年度统计数据表明,现阶段 72.3% 的中高危有效漏洞均为业务逻辑类漏洞࿰… 2026/7/9 21:53:04
机器视觉与PLC集成:轮毂缺陷检测与字符识别误差控制在0.2mm内 机器视觉与PLC集成:轮毂缺陷检测与字符识别误差控制在0.2mm内的技术实现轮毂作为汽车关键零部件,其表面质量直接影响行车安全与美观。传统人工检测效率低且易漏检,而采用机器视觉与PLC集成方案可实现微米级精度检测。本文将深入解析高精度视觉… 2026/7/9 0:01:04
GBase 8a vs MySQL 8.0:ALTER TABLE语法与限制的5点关键差异对比 GBase 8a与MySQL 8.0:ALTER TABLE语法差异深度解析与实战指南1. 两种数据库的ALTER TABLE能力全景对比在数据库架构设计和运维过程中,表结构变更(DDL操作)是不可避免的需求。GBase 8a作为国产分析型数据库代表,与开源M… 2026/7/9 0:03:06
【大数据毕业设计】基于多源旅游数据的景区热度分析与推荐系统的设计与实现 基于 Django 的旅游偏好挖掘与景区推荐系统(源码+文档+远程调试,全bao定制等) 博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am… 2026/7/9 0:05:09
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/8 20:15:17
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/8 14:25:08