第四讲_ArkTS装饰器(一)

1. @Builder装饰器

@Builder是一种更轻量的 UI 元素复用机制,可以将重复使用的 UI 元素抽象成一个方法,并用@Builder修饰该方法,此方法就可以在 build() 里调用。

ps:自定义组件的build()方法中,不允许调用没有被@Builder装饰的方法

1.1 在组件内定义构建函数

  • 构建函数是该组件的私有、特殊类型的成员函数,只能在组件内被访问。
  • 构建函数中,this 指当前所属组件,组件的状态变量可以在构建函数内访问。
@Entry
@Component
struct FirstComponent {
   
  @Builder MyBuilderFunction() {
   
    Text("我是在@builder里的Text")
      .fontSize(30)
  }

  build() {
   
    // Column是一个容器组件,在后面的博文会详细介绍
    Column() {
   
      this.MyBuilderFunction()
    }
  }
}

1.2 全局定义构建函数

  • 全局定义的构建函数可以被整个应用获取。
  • 如果不涉及组件状态变化,建议使用全局定义构建方法。
@Entry
@Component
struct FirstComponent {
   

  build() {
   
    // Column是一个容器组件,在后面的博文会详细介绍
    Column() {
   
      // 调用全局构建函数
      MyGlobalBuilderFunction()
    }
  }
}

// 定义全局构建函数,需要添加function关键字
@Builder function MyGlobalBuilderFunction() {
   
  Text("我是在@builder里的Text")
    .fontSize(30)
}

2. @BuilderParam装饰器

@BuilderParam用来装饰指向@Builder方法的变量,可在初始化自定义组件时对此属性进行赋值。

@Entry
@Component
struct Parent {
   
  @Builder MyBuilderFunction() {
   
    Text("我是在@builder里的Text")
      .fontSize(30)
  }

  build() {
   
    Column() {
   
      // 使用自定义组件Child,并用MyBuilderFunction初始化自组件的builder参数
      Child({
    builder: this.MyBuilderFunction} )
    }
  }
}

@Component
struct Child {
   
  // 定义一个指向被@Builder修饰的方法的成员变量
  // 并且要求这个被@Builder修饰的方法:没有入参,没有返回值
  @BuilderParam builder: () => void;

  build() {
   
    Column() {
   
      this.builder()
    }
  }
}

相关推荐

  1. _ArkTS装饰

    2024-01-21 01:14:03       40 阅读
  2. _ArkTS装饰(二)

    2024-01-21 01:14:03       38 阅读
  3. ArkTs 语法学习 ---- 组件相关装饰

    2024-01-21 01:14:03       29 阅读
  4. 构建ArkTS之@Builder装饰:自定义构建函数

    2024-01-21 01:14:03       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-21 01:14:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-21 01:14:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-21 01:14:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-21 01:14:03       20 阅读

热门阅读

  1. WebSocket

    WebSocket

    2024-01-21 01:14:03      28 阅读
  2. 铺设道路——贪心

    2024-01-21 01:14:03       37 阅读
  3. 算法训练营Day37(贪心6)

    2024-01-21 01:14:03       44 阅读