前言
前面我们玩到了@ Builder 装饰器我们知道他是一个自定义构建函数,可以将重复使用的UI元素抽象成一个方法,在build方法里调用,那么本期我们要玩玩的是BuilderParam 顾名思义: builder 的参数,用作是啥? 这玩意有点麻烦说实话不好用......
用于自定义构建函数的时候在里面添加了一个自定义组件如果你需要实现点击跳转功能按早以前我们都是直接修改这个函数里面的组件那么导致所有引用这个函数的组件都会有点击跳转功能,为解决此问题,ArkUI引入了@BuilderParam装饰器,@BuilderParam用来装饰指向@Builder方法的变量,我们就可以在初始化自定义组件时对此属性进行赋值,为自定义组件增加特定的功能。
该装饰器用于声明任意UI描述的一个元素,类似slot占位符。

使用
⚠️: @BuilderParam装饰的方法只能被自定义构建函数@Builder装饰来初始化
使用所属自定义组件的自定义构建函数或者全局的自定义构建函数,在本地初始化@BuilderParam,啥意思?操作看看
语法:
所属的自定义组件里面的函数
官方给到的一个语法
这里 void 后面跟着类似赋值操作 官方没有给出合理的解释, 我们继续跟着案例来

@Builder function GlobalBuilder0() {}
@Component
struct Child {
@Builder doNothingBuilder() {};
// 这里 void 后面跟着类似赋值操作 官方没有给出合理的解释
@BuilderParam aBuilder0: () => void = this.doNothingBuilder;
@BuilderParam aBuilder1: () => void = GlobalBuilder0;
build(){}
}
用父组件自定义构建函数初始化子组件@BuilderParam装饰的方法
使用子组件的 BuildeParam 传递参数的时候不能传递字符串、数值等类型只能传递 Builder 修饰的函数

// 乖儿
@Component
struct Son {
@BuilderParam bp0: () => void;
build() {
Column() {
// 直接调用使用
this.bp0()
}
}
}
// 父亲组件
@Entry
@Component
struct Father {
@Builder componentBuilder() {
Text(`我这里是父类里面的组件`)
}
build() {
Column() {
Son({bp0: this.componentBuilder})
}
}
}
效果展示

this指向
这个时候虽然是可以用到父

本文介绍了HarmonyOS中的BuilderParam装饰器,它用于为自定义组件添加特定功能,如点击跳转,并详细讲解了如何在自定义构建函数中使用和初始化@BuilderParam。同时,文章还涉及了全局自定义构建函数、尾随闭包等概念,并强调了鸿蒙开发的学习资源对于开发者的重要性。
最低0.47元/天 解锁文章
1295

被折叠的 条评论
为什么被折叠?



