鸿蒙_组件内和组件外使用@Builder自定义构建函数的区别

通过对自定义构建函数的学习,我发现在组件内和组件外编写和使用方面有一些小差别,通过新建一个页面TestBuilderInsideAndOutside来测试一下:

复制代码
@Entry
@Component
struct TestBuilderInsideAndOutside {
  @State message: string = 'Test Builder Inside And Outside';

  //组件内自定义构建函数,不加function
  @Builder
  InsideBuilder(from: string) {
    Text(from + ' Text in Inside Builder').fontSize(22)
  }

  build() {
    Column() {
      Text(this.message)
        .fontSize(22)
        .fontWeight(FontWeight.Bold)
        .onClick(() => {
          this.message = 'Welcome';
        })
        .padding({ bottom: 30 })

      //使用组件内自定义构建函数需要加this
      this.InsideBuilder('组件内')

      //使用组件外自定义构建函数不需要加this
      OutsideBuilder('组件外')

    }
    .height('100%')
    .width('100%')
  }
}

//组件外自定义构建函数,需要加function
@Builder
function OutsideBuilder(from: string) {
  Text(from + ' Text in Outside Builder').fontSize(22)
}

通过测试我们发现,在组件外需要加function,使用时不需要this,组件内不需要加function,但使用时需要加this,而且在组件内编写自定义构建函数时,要写在struct内部,build()外部,和普通状态变量的编写位置是相同的,如果写错了位置会报错。

相关推荐
ONEDAY11 小时前
HarmonyOS 多 Product 构建实践:一套代码生成多个产物
harmonyos
TT_Close13 小时前
别劝退了!5秒搞定 Flutter 鸿蒙 FVM 起跑线
flutter·harmonyos·visual studio code
TrisighT14 小时前
ArkTS 列表滚动时为什么会闪现旧数据?我扒了 LazyForEach 的复用逻辑
harmonyos·arkts·arkui
MonkeyKing14 小时前
鸿蒙ArkTS深度剖析:ArkTS与TS/JS核心差异、静态强类型实战优势
typescript·harmonyos
TrisighT15 小时前
Electron鸿蒙PC上写日志文件,我被权限和路径坑了两次
electron·harmonyos
TrisighT2 天前
一个下午搞定 ArkTS 折叠面板?结果我从两点写到晚上九点
harmonyos·arkts·arkui
花椒技术4 天前
HJPusher / HJPlayer SDK 实践:我们为什么把直播推播链路拆成一套可复用能力
设计模式·harmonyos·直播
一维Ace5 天前
HarmonyOS ArkTS 按钮组件全解:Button、Toggle 状态交互实战
harmonyos
anyup6 天前
来简单聊聊鸿蒙开发,万元奖金的事~
前端·华为·harmonyos
Georgewu6 天前
【无测试机别害怕】华为云鸿蒙云手机南:从零到联调全流程详解
harmonyos