鸿蒙_引用自定义构建函数@BuilderParam在自定义组件中的使用

在ArkUI的学习中,通过@BuilderParam修饰的参数就是引用自定义构建函数,它可以接受一个自定义构建函数。当我们编写了一个自定义组件后,想要在使用时替换其中的某一部分UI内容,就可以在组件内部可以将这部分抽离放到自定义构建函数内,我们来验证一下如何使用:

TypeScript 复制代码
@Entry
@Component
struct TestBuilderParamInComponent {
  @State message: string = 'Test @BuilderParam In Component';

  //编写一个自定义构建函数,用于替换自定义组件的部分UI
  @Builder
  builderInMainPage() {
    Row() {
      Text('2、').fontColor(Color.Green)
      Text('将自定义构建函数作为参数传入组件')
    }
  }

  build() {
    Column() {
      Text(this.message)
        .margin({ bottom: 10 })
        .fontSize(18)
        .fontWeight(FontWeight.Bold)

      //不传参(如果自定义组件内的builderParamInComp加了@Require不传会报错)
      CompWithOneBuilderParam()

      //普通传参
      CompWithOneBuilderParam({
        builderParamInComp: this.builderInMainPage
      })

      //尾随闭包(在自定义组件后的大括号内直接写UI组件)
      CompWithOneBuilderParam() {
        Row() {
          Text('3、').fontColor(Color.Red)
          Text('通过尾随闭包方式直接传入组件')
        }
      }

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

//自定义组件
@Component
struct CompWithOneBuilderParam {
  //自定义构建函数
  @Builder
  builderInComp() {
    Text('1、自定义构建函数的默认内容')
  }

  //引用自定义构建函数(把自定义构建函数整体作为一个参数)
  //@Require
  @BuilderParam
  builderParamInComp: () => void = this.builderInComp;

  build() {
    Column({ space: 10 }) {
      Text('这是一个自定义组件').fontWeight(FontWeight.Bold)
      this.builderParamInComp()
    }
    .padding(10)
    .width('100%')
    .margin({ bottom: 10 })
    .border({ width: 1, color: Color.Blue })
  }
}

通过测试我们发现,如果自定义组件内部只包含一个引用自定义构建函数(@BuilderParam修饰的参数)时,还可以通过尾随闭包的方式使用,当有多个引用自定义构建函数时,只能通过普通传参方式使用。如果某个参数被@Require修饰了,那么该参数就是必传项,如果不写就会在编辑器内标红。


运行效果如下:

相关推荐
每天进步一点点km2 小时前
自用-牛客网-华为机试编程模拟题1-python
华为od·华为·面试
懿路向前3 小时前
唤醒工作台全实录(一):立项——化性起伪与三条设计原则
人工智能·华为
hhhjhl5 小时前
开源鸿蒙平台 KMP_CMP 三方库「Clikt」适配全流程
华为·开源·harmonyos
熊猫钓鱼>_>6 小时前
四种书签,一条时间线:一个读书 App 的记忆颗粒与它的边界案例【鸿蒙心迹】
开发语言·华为·ai编程·harmonyos·鸿蒙·openharmony·鸿蒙pc
Goway_Hui6 小时前
【KMP for OpenHarmony】-- 在鸿蒙工程中使用 Apollo-Kotlin
华为·kotlin·harmonyos
正在走向自律8 小时前
HarmonyOS 手机/平板远程控制 Windows 电脑实践指南
智能手机·电脑·harmonyos·todesk·远程工具
熊猫钓鱼>_>9 小时前
鸿蒙 PC 三方库适配复盘:libfvad 1.0 —— 把 WebRTC VAD 做成能装进采集链路的静态库
服务器·开发语言·华为·harmonyos·openharmony·适配·鸿蒙pc
aqi009 小时前
AI编程让鸿蒙开发电子书APP更加快捷
android·华为·harmonyos·鸿蒙·harmony
熊猫钓鱼>_>10 小时前
鸿蒙PC高分屏与键鼠交互适配:DPI缩放、右键菜单一次讲清
开发语言·笔记·华为·ai编程·harmonyos·鸿蒙·鸿蒙心迹