3、构建你的第一个鸿蒙组件化 UI 页面:实现可复用的卡片组件(附实战代码)


鸿蒙开发的精髓,不止在于可以"一次开发,多端部署",更关键的是------组件化能力超强!本篇文章带你构建一个可复用的「信息卡片组件」,掌握 HarmonyOS ArkTS 的组件化开发精髓!


🎯 一、目标效果

实现一个通用的信息卡片组件,具备以下能力:

  • 支持标题、副标题展示
  • 可自定义图标
  • 可响应点击事件
  • 实现组件复用(传入不同参数即可渲染不同内容)

最终效果示意:

css 复制代码
[📦] 今日订单
     已完成:123单

🧱 二、项目结构预设

markdown 复制代码
- pages/
  - Index.ets         // 主页面,引用组件
- components/
  - InfoCard.ets      // 自定义信息卡片组件

🧩 三、创建组件 InfoCard

路径:components/InfoCard.ets

less 复制代码
@Component
export struct InfoCard {
  @Prop title: string
  @Prop subtitle: string
  @Prop icon: string
  @Prop onTap: () => void

  build() {
    Row() {
      Text(this.icon).fontSize(28).margin({ right: 12 })
      Column() {
        Text(this.title).fontSize(18).fontWeight(FontWeight.Bold)
        Text(this.subtitle).fontSize(14).margin({ top: 4 }).opacity(0.6)
      }
      .justifyContent(FlexAlign.Center)
    }
    .padding(16)
    .backgroundColor('#f5f5f5')
    .borderRadius(12)
    .width('90%')
    .margin({ top: 8, bottom: 8 })
    .onClick(() => this.onTap?.())
  }
}

✅ 核心点:

  • 使用 @Prop 实现组件参数传递
  • 使用 onClick 响应用户交互
  • UI 布局使用 Row + Column 组合,轻量易读

🧪 四、在主页中使用组件

路径:pages/Index.ets

less 复制代码
import InfoCard from '../components/InfoCard'

@Entry
@Component
struct Index {
  build() {
    Column() {
      InfoCard({
        icon: '📦',
        title: '今日订单',
        subtitle: '已完成:123单',
        onTap: () => {
          console.log('点击了订单卡片')
        }
      })

      InfoCard({
        icon: '💰',
        title: '本月收入',
        subtitle: '¥18,250',
        onTap: () => {
          console.log('点击了收入卡片')
        }
      })
    }
    .width('100%')
    .alignItems(HorizontalAlign.Center)
    .justifyContent(FlexAlign.Center)
    .height('100%')
    .backgroundColor('#ffffff')
  }
}

📌 五、实操总结

技术点 说明
@Prop 定义可传入参数,类似 props
onClick 原生支持点击事件
组件封装 类似 React/Vue 的组件化思想
样式控制 使用 ArkTS 声明式语法完成布局与样式

📦 六、拓展优化建议

你可以进一步扩展组件功能,如:

  • 支持图标图片 URL(Image 渲染)
  • 支持背景色动态配置
  • 添加右侧操作按钮(如「查看」)

📘 下篇预告

《状态驱动开发入门:玩转 @State 与 @Provide》------带你深入鸿蒙响应式架构的本质,教你如何构建多组件共享状态!


相关推荐
程序猿DD27 分钟前
OctaFuse Gateway 2.3.0:供应商粘性绑定,让缓存命中更稳定
后端
OH_TPC44 分钟前
【鸿蒙优选三方库】@ohos/grpc:在 HarmonyOS 上像调本地方法一样调远程服务
华为·harmonyos·鸿蒙
吴懿不在 不负信仰1 小时前
从jQuery谈库与框架的设计之优劣
前端·javascript·jquery
达子6661 小时前
第30章_综合案例:HarmonyOs开发图解之 俄罗斯方块游戏
游戏·华为·harmonyos
灵析表格1 小时前
灵析表格手机号处理函数深度分析报告
前端·网络·json·wps·灵析表格·excel公式盒子
云端漫步19871 小时前
HarmonyOS NEXT AI 应用开发总结:30 篇之旅
人工智能·华为·harmonyos
乐橙开放平台1 小时前
老旧小区监控事件驱动派单:基于 setMessageCallback 的 msgType 分级与工单闭环实现
后端·物联网·音视频
智海深蓝1 小时前
智慧渔业海上养殖数字孪生实践方向与难点拆解分析
java·前端·网络
丁引1 小时前
《数据清洗的艺术:如何用20行核心逻辑优雅地删除无标签图片》
前端·数据库·python
Bigger1 小时前
Han:一个让 AI Agent 也能做出高级中国风页面的 CSS 设计系统
前端·ai编程·设计