鸿蒙原生开发手记:徒步迹 - 自定义组件开发规范

鸿蒙原生开发手记:徒步迹 - 自定义组件开发规范

掌握自定义组件的设计与封装规范


前言

组件化开发是 ArkUI 的核心思想。徒步迹项目中大量使用自定义组件来复用 UI 逻辑、提升代码可维护性。本文总结自定义组件的设计原则、通信方式和最佳实践。


一、组件设计原则

typescript 复制代码
// 1. 单一职责:每个组件只负责一个功能
// 2. 高内聚低耦合:组件内部逻辑紧密,对外依赖最小
// 3. 可复用性:通过 @Prop 参数化实现复用

// 坏的实践:一个组件做太多事
@Component
struct BadComponent {
  @Prop user: any;
  @Prop routes: any[];
  @Prop weather: any;
  // 三个不相关的功能耦合在一起
}

// 好的实践:拆分为独立组件
@Component
struct UserProfile { @Prop user: User; }
@Component
struct RouteCard { @Prop route: Route; }
@Component
struct WeatherWidget { @Prop weather: Weather; }

二、组件通信规范

typescript 复制代码
// 1. 父传子:@Prop
@Component
struct ChildComponent {
  @Prop data: string = '';
}

// 2. 子传父:回调函数
@Component
struct ChildWithCallback {
  @Prop onAction: (result: string) => void = () => {};

  private handleClick(): void {
    this.onAction('点击了按钮');
  }
}

// 3. 跨组件:@Provide / @Consume
@Component
struct GrandParent {
  @Provide('theme') theme: string = 'dark';

  build() {
    Child();
  }
}

@Component
struct Child {
  @Consume('theme') theme: string;

  build() {
    Text(`当前主题: ${this.theme}`);
  }
}
通信方式 装饰器 方向 适用场景
父传子 @Prop 单向 基础数据传递
子传父 回调函数 单向 事件通知
跨层级 @Provide/@Consume 单向 主题/配置共享
全局 AppStorage 双向 全局状态

三、总结

自定义组件是 ArkUI 应用开发的基础。通过遵循单一职责、合理使用通信装饰器,徒步迹的组件库保持了良好的可维护性和可扩展性。


总结

本文围绕"徒步迹"应用的实际开发场景,系统讲解了相关技术的实现要点。通过代码实战 +原理剖析的方式,帮助开发者快速掌握 HarmonyOS NEXT 的核心开发能力。

总结要点

  1. 理解 HarmonyOS NEXT 应用架构与 Ability 生命周期
  2. 掌握 ArkUI 声明式 UI 的状态管理与组件化开发
  3. 熟悉常用 Kit 能力(Map Kit、Location Kit、Camera Kit 等)的接入方式
  4. 学会性能优化、内存管理、并发编程等进阶技巧
  5. 具备从 0 到 1 构建完整 HarmonyOS 应用工程的能力

核心特性回顾

  • 声明式 UI:ArkUI 提供简洁高效的声明式开发范式
  • 状态管理:@State、@Prop、@Link、@Provide、@Consume 等装饰器
  • 跨组件通信:通过 Provide/Consume 实现跨层级数据传递
  • 原生能力:通过 Kit 接入系统能力(地图、定位、相机等)
  • 性能优化:LazyForEach、虚拟列表、Skeleton 骨架屏等

学习建议 :技术学习重在实践,建议结合项目源码同步动手操作,遇到问题多查阅HarmonyOS 官方文档


下一篇预告:鸿蒙原生开发手记:徒步迹 - 持续更新中


如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!

相关资源:

相关推荐
烂蜻蜓2 小时前
Flask入门教程(十二):表单处理——从基础到Flask-WTF完整实践
后端·python·flask
大锅盖13 小时前
围绕夜航深蓝与霓虹青的跨境画卷构建 HarmonyOS ArkUI 出境旅行向导平台
华为·harmonyos
2601_962055979 小时前
跟据spring boot版本,查看对应的tomcat,并查看可支持的tomcat的版本范围
spring boot·后端·tomcat
Lost of 程序猿11 小时前
ASP.NET Core API 幂等性设计深度实战:从一次重复申领事故说起
后端·asp.net
骐骥111 小时前
学习:使用postMessage()建立应用侧与前端页面的数据通道
harmonyos·鸿蒙·jsbridge·postmessage·数据通道
QQ_216962909612 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端
郑州光合科技余经理13 小时前
本地生活服务系统:模块边界与结算字段怎么拆
java·开发语言·前端·后端·系统架构·uni-app·php
IT_陈寒13 小时前
Vue的嵌套组件竟然吃掉了我的事件?
前端·人工智能·后端
大辉狼_音频架构14 小时前
进阶:从源码编译 SOF 固件与 topology
后端
大辉狼_音频架构14 小时前
上板:让 SOF 在 FRDM-i.MX8MP 上跑起来
后端