鸿蒙_引用自定义构建函数@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修饰了,那么该参数就是必传项,如果不写就会在编辑器内标红。


运行效果如下:

相关推荐
aqi003 小时前
一文理清 HarmonyOS 6.0.2 涵盖的十个升级点
android·华为·harmonyos·鸿蒙·harmony
环信即时通讯云5 小时前
环信Flutter UIKit适配鸿蒙实战指南
flutter·华为·harmonyos
Swift社区6 小时前
鸿蒙 PC 应用启动优化全解析
华为·harmonyos
richard_yuu7 小时前
鸿蒙本地数据存储实战|Preferences 封装、数据隔离与隐私合规存储方案
android·华为·harmonyos
Lynnb7 小时前
Mac电脑烧录 RK3588 鸿蒙开发板固件教程
华为·harmonyos·鸿蒙系统
我头上有犄角ovo8 小时前
HarmonyOS 测肤拍照页实战:Metadata 实时取景 + Core Vision 拍后校验,从 0.001 的 widthRatio 踩坑到可上线
前端·harmonyos
码农小北9 小时前
MAC 配置鸿蒙(HarmonyOS) SDK 环境变量完整指南
macos·华为·harmonyos
weixin_386468969 小时前
openharmony 6.0编译rk3568过程记录
c语言·c++·git·python·vim·harmonyos·openharmony
小雨青年9 小时前
HarmonyOS 6 | Pura X Max 鸿蒙原生适配 08:大屏下操作按钮位置重排
华为·harmonyos