【Harmony OS 4.0】自定义组件 —— @Component 装饰器

  1. @Component 装饰器用于装饰 struct 关键字声明的数据结构。struct 被 @Component 装饰后才具有组件化的能力。
    1.2 具有以下特点:
    1.2.1 可组合:允许开发者组合使用多个系统组件,及其属性和方法,实现UI的复用。
    1.2.2 可重用:可以被其他组件重用,并作为不同的实例在不同的父组件或容器中使用。
    1.2.3 数据驱动UI更新,通过状态变量的改变,来驱动UI的刷新。
  2. struct 关键字,是 ArkTs 新增的用于自定义组件、自定义弹窗的关键字。
  3. build() 方法,用于声明自定义组件的UI结构体。
  4. 给自定义组件传参,必须传一个对象。

1. 自定义组件语法(通用模版)

ts 复制代码
// comp 回车自动生成自定义组件模版
@Component
struct 自定义组件名 {
	build() {}
}

2. 在同一个文件定义并使用自定义组件

ts 复制代码
// 自定义组件
@Component
struct MyHelloComponent {
  @State username: string = '🧚‍'
  build(){
    Column() {
      Text(`hello ${this.username}`)
        .fontSize(16)
        .fontColor(Color.Grey)
        .height(15)
        .onClick(() => {
          this.username = '七喜'
        })
    }
  }
}

@Entry
@Component
struct UITest3 {
  build() {
    Column({space: 10}) {
      Text('主界面')
        .fontSize(24)
        .fontWeight(FontWeight.Bold)
        .fontColor(Color.Black)
      MyHelloComponent({username: 'world'}) // 引用自定义组件
      Divider()
      MyHelloComponent({username: 'SZ'}) // 引用自定义组件
    }
  }
}

3. 不在同一个文件使用 export 、import 导出导入自定义组件

ts 复制代码
// 自定义组件
@Component
export struct MyHelloComponent {
  @State username: string = '🧚‍'
  build(){
    Column() {
      Text(`hello ${this.username}`)
        .fontSize(16)
        .fontColor(Color.Grey)
        .height(15)
        .onClick(() => {
          this.username = '七喜'
        })
    }
  }
}

import { MyHelloComponent } from './MyHelloComponent'

@Entry
@Component
struct UITest3 {
  build() {
    Column({space: 10}) {
      Text('主界面')
        .fontSize(24)
        .fontWeight(FontWeight.Bold)
        .fontColor(Color.Black)
      MyHelloComponent({username: 'world'}) // 引用自定义组件
      Divider()
      MyHelloComponent({username: 'SZ'}) // 引用自定义组件
    }
  }
}
相关推荐
xiangxiongfly91522 天前
微信小程序-自定义组件
微信小程序·小程序·自定义组件
卿卿qing3 个月前
【Harmony OS 4.0】TypeScript 快速入门
typescript·harmony os 4.0
卿卿qing3 个月前
【Harmony OS 4.0】从零开始,快速上手
harmony os 4.0
卿卿qing3 个月前
【Harmony OS 4.0】交互事件(手势事件)
harmony os 4.0
招风的黑耳3 个月前
Vue封装分页下拉选择器的组件
vue.js·自定义组件
CrazyMo_4 个月前
OpenHarmony 入门——ArkUI自定义组件的基础语法(一)
harmonyos·鸿蒙系统·自定义组件·arkui
BigFlyRed4 个月前
Android 自定义Edittext 和TextView 提示文字和填入内容不同的粗细组件
android·自定义组件·edittext·textview
ConneyWu4 个月前
【HarmonyOS NEXT】鸿蒙如何动态添加组件(wrapBuilder:封装全局@Builder)官方推荐方式
华为·harmonyos·自定义组件