【Harmony OS 4.0】自定义组件

  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. 自定义组件语法(通用模版)

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

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

// 自定义组件
@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 导出导入自定义组件

// 自定义组件
@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'}) // 引用自定义组件
    }
  }
}
  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值