背景
这是一个基础概念,其实没有什么原因,练习过程中,自然可以感受到其用法,后期加上真实项目的演练,会形成习惯
功能核心理念
“在自定义组件中添加一个点击跳转操作。若直接在组件内嵌入事件方法,将会导致所有引入该自定义组件的地方均增加了该功能。为解决此问题,ArkUI引入了@BuilderParam装饰器”
这样的场景在任何平台任何公司都会遇到,是否采用在公共组件中定义某个功能还是在外部定义某个功能,都是取决于实际业务场景发生的概率。
@BuilderParam 要告知是:HarmonyOS有应对这样的机制
|
核心代码
@Entry
@Component
struct BuilderParam2Index {
label: string = 'Parent'
@Builder GlobalBuilder1($$: { label: string }) {
Text(`${this.label}`).fontColor(Color.White)
Text($$.label)
.fontColor(Color.White)
.width('100%')
.height(50)
.backgroundColor(Color.Green)
}
build() {
Column({ space: 30 }) {
//一. 通过参数初始化组件
BuilderParamChild2({ aBuilder1: this.GlobalBuilder1 })
BuilderParamChild2({ label: 'Child', aBuilder1: this.GlobalBuilder1 })
//二. 通过尾随闭包初始化组件, 如果组件中包含两个及以上@BuilderParam函数,则无法使用此种初始化方式
BuilderParamChild2(){}
BuilderParamChild2({ label: 'Child' }) {}
BuilderParamChild2({ label: 'Child' }) {
this.GlobalBuilder1({ label: 'global Builder label2' })
}
BuilderParamChild2({ label: 'Child' }) {
Text('自定义初始化文字').fontColor(Color.Orange)
}
}
.width('100%')
.height('100%')
.padding({ top: px2vp(111) })
.alignItems(HorizontalAlign.Center)
.justifyContent(FlexAlign.Center)
}
}
@Component
struct BuilderParamChild2 {
label: string = "Child"
// 有参数类型,指向的GlobalBuilder1也是有参数类型的方法
@BuilderParam aBuilder1: ($$: { label: string }) = > void;
build() {
Column() {
Text('BuilderParamChild').fontColor(Color.Red)
this.aBuilder1({ label: 'global Builder label' })
}.width('100%').backgroundColor(Color.Green)
}
}
审核编辑 黄宇
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
鸿蒙OS
+关注
关注
0文章
128浏览量
4279
发布评论请先 登录
相关推荐
鸿蒙OS应用程序开发
这份学习文档主要是带领大家在鸿蒙OS上学习开发一个应用程序,主要知识点如下:1、U-Boot引导文件烧写方式;2、内核镜像烧写方式;3、镜像运行。
发表于 09-11 14:39
鸿蒙OS适用的全场景到底什么意思?
鸿蒙系统(HarmonyOS),第一款基于微内核的全场景分布式OS,是华为自主研发的操作系统。华为在开发者大会HDC.2019上正式发布了鸿蒙系统,该系统将率先部署在智慧屏、车载终端、
发表于 09-25 09:25
HarmonyOS/OpenHarmony应用开发-ArkTS语言@BuilderParam引用@Builder函数
引入了@BuilderParam装饰器,@BuilderParam用来装饰指向@Builder方法的变量,
发表于 05-30 11:01
OpenHarmony装饰指定自定义组件:@BuilderParam装饰器
引入了@BuilderParam装饰器,@BuilderParam用来装饰指向@Builder方法的变量,
发表于 09-27 16:02
鸿蒙OS 2.0手机开发者Beta版发布会在京举办
三个月前,鸿蒙OS 2.0正式在华为开发者大会2020亮相。12月16日,鸿蒙OS 2.0手机开发
鸿蒙OS2.0手机开发者Beta版登场
12 月 16 日,华为宣布正式推出鸿蒙 OS 的手机开发者 Beta 版,并正式面向个人/企业开发者公测鸿蒙 2.0,
华为鸿蒙OS 2.0开发者公测版本大批量向已申请开发者推送
4 月 27 日,华为鸿蒙 OS 2.0 开发者公测版本大批量向已申请的开发者推送,随后网上出现大量鸿蒙
鸿蒙os和安卓的区别,鸿蒙与安卓比有什么优势
华为鸿蒙系统已经发布,鸿蒙系统和安卓都是在Linux基础上开发出来的,所以很多小伙伴都想知道鸿蒙os和安卓系统之间的区别是什么?华为
鸿蒙OS开发教学:【编程之重器-装饰器】
@StorageLink
9. @Provide
10. @Consume
11. @Observed
12. @Builder
13. @BuilderParam
14.
评论