自学鸿蒙HarmonyOS的ArkTS语言<十>@BuilderParam装饰器
创始人
2024-12-28 02:09:55
0

作用:当子组件多处使用时,给某处的子组件添加特定功能

一、初始化

1、只能被@Builder装饰的方法初始化
2、使用所属自定义组件的@builder方法初始化
3、使用父组件的@builder方法初始化 - 把父组件的@builder传过去,参数名和子组件的@builderParam同名

@Component struct Child {   @Builder childBuilder() {}   @BuilderParam childBuilderParam: () => void = this.childBuilder // 必须用childBuilder初始化下,否则预览出不来    build() {     Column() {       Text('我是子组件')         .fontColor(Color.White)       this.childBuilderParam()     }   } }  @Entry @Component struct Index7 {    @Builder parentBuilder() {     Text('我是父组件定制的的 builder')    }    build() {     Column() {       Row() {         Child({childBuilderParam: this.parentBuilder}) // 添加独特功能       }       .padding(10)       .backgroundColor(Color.Brown)        Row() {         Child()       }       .padding(10)       .backgroundColor(Color.Green)      }   } } 
二、this指向
@Component struct Child1 {   label: string = '我是子组件的label'   @Builder childBuilder() {}   @BuilderParam childBuilderParam: () => void = this.childBuilder   @BuilderParam childChangeThisBuilderParam: () => void = this.childBuilder    build() {     Column() {       this.childBuilderParam()       this.childChangeThisBuilderParam()     }   } }  @Entry @Component struct Index7_1 {   label: string = '我是父组件的label'    @Builder parentBuilder() {     Text(this.label)    }    build() {     Column() {       this.parentBuilder() // this指向父组件         Child1({         childBuilderParam: this.parentBuilder, // this.parentBuilder传入到child中指向child         childChangeThisBuilderParam: (): void => this.parentBuilder(), // 箭头函数的this指向宿主对象,即父组件       })      }   } } 

在这里插入图片描述

三、带参数
class Tmp {   label: string = '' } // 全局builder @Builder function globalBuilder($$: Tmp) {   Text($$.label) }  // Child1中 ... // 有参数 @BuilderParam childHasParamsBuilderParam: ($$: Tmp) => void = globalBuilder build() {   Column() { 	  ... 	  this.childHasParamsBuilderParam({label: '我是一个有参数的BuilderParam'})   } } // 父组件中 ... Child1({   ...   childHasParamsBuilderParam: globalBuilder }) 
四、尾随闭包的形式
@Component struct Child2 {   @Builder childBuilder() {}   // 尾随闭包的形式传入时子组件内只能有一个BuilderParam   @BuilderParam childBuilderParam: () => void = this.childBuilder    build() {     Column() {       Text('我是子组件2')       this.childBuilderParam()     }     .margin({top: 30})   } } // 父组件中 ... Child2() {    Column() {      globalBuilder({label: '我是通过尾随闭包传入的'})    } } 

在这里插入图片描述
注意:
尾随闭包的形式子组件内只能有一个 @BuilderParam

相关内容

热门资讯

四瞬间掌握!红河西元旗牌脚本(... 四瞬间掌握!红河西元旗牌脚本(透视)素来有开挂辅助神器(有挂教程)1、下载安装好红河西元旗牌脚本,进...
透视透明挂!we-poker辅... 透视透明挂!we-poker辅助(透视)本来有开挂辅助下载(有挂解密);无需打开直接搜索加(薇:13...
1分钟手筋!新卡农辅助软件(透... 1分钟手筋!新卡农辅助软件(透视)详细开挂辅助安装(有挂教学);无需打开直接搜索加(薇:136704...
玩家必看科普!新天道联盟辅助器... 玩家必看科普!新天道联盟辅助器,一起宁德钓蟹技巧,必赢方法(了解有挂);无需打开直接搜索加(薇:13...
7分钟掌握!随意玩挂(透视)固... 7分钟掌握!随意玩挂(透视)固有有开挂辅助插件(详细教程);无需打开直接搜索加(薇:13670430...
透明神器!werplan怎么透... 透明神器!werplan怎么透视(透视)原本有开挂辅助软件(有挂分享);无需打开直接搜索加(薇:13...
第8分钟绝活!卡农大厅辅助(透... 第8分钟绝活!卡农大厅辅助(透视)详细开挂辅助平台(详细教程)1、下载安装好卡农大厅辅助,进入游戏主...
普及知识!微信途游四川小程序脚... 普及知识!微信途游四川小程序脚本,花花生活圈辅助工具安装教程,教你教程(竟然有挂)1、下载安装好花花...
4秒钟熟悉!花花生后圈开挂(透... 4秒钟熟悉!花花生后圈开挂(透视)原先有开挂辅助安装(有挂攻略)1、下载安装好花花生后圈开挂,进入游...
透视存在!约局吧德州真的存在透... 透视存在!约局吧德州真的存在透视吗(透视)原本有开挂辅助脚本(证实有挂)1、下载安装好约局吧德州真的...