当前位置: 首页 > news >正文

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

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

@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修饰了,那么该参数就是必传项,如果不写就会在编辑器内标红。


运行效果如下:

http://www.jsqmd.com/news/609183/

相关文章:

  • 为什么92%的.NET团队在.NET 9发布30天内未启用低代码?揭秘微软未公开的Runtime沙箱限制与IL修剪兼容性断层
  • 从Time-MoE到KAN与Mamba:拆解ICLR 2025时间序列论文里的那些‘网红’架构与核心思想
  • 2026 行业内碳纤维胶源头厂家推荐榜,结构加固型/桥梁修缮型/水下锚固型/特种粘接型厂家选择指南 - 海棠依旧大
  • subprocess.check_output和stdout有什么不同 还有run和popen
  • ArozOS部署最佳实践:5个关键步骤确保系统稳定运行
  • 光伏逆变器测试避坑:派能协议下电流值5倍偏差的修复实录
  • 10-汽车销售系统的设计与实现
  • Gemma-3 Pixel Studio步骤详解:顶部像素面板交互设计与GPU算力适配方案
  • Mem Reduct:5MB级内存清理工具让Windows系统效率提升300%的技术实践
  • Visual Studio 2022 版本对决:Community、Professional 与 Enterprise 全方位深度解析
  • 内存分配算法(系统分配算法~应用常见算法)
  • EtchDroid多语言支持实践:如何为全球用户提供本地化体验
  • GitHub中文化插件:3分钟实现GitHub全面中文界面的终极指南
  • 飞书文档批量导出架构实战:企业级知识库迁移的高效解决方案
  • BEMCheckBox完全自定义教程:掌握6种动画类型和外观属性
  • 紧急制动(AEB )模型,Carsim与Simulink联合仿真。 车辆行驶过程中,利用主动制动的方式躲避前方障碍物。主要利用制动安全距离进行判断
  • 海思Hi3516DV500实战:从陀螺仪数据异常到稳定防抖,我踩过的那些坑(附完整调试命令)
  • 3分钟搞定Goods查询页:Map传参+StringUtils分割符实战(附避坑指南)
  • 网易云音乐体验升级:BetterNCM插件管理器全攻略
  • MyCLI:一个增强型MySQL命令行客户端
  • 去屑洗发水哪个效果好? - 中媒介
  • 终极启动盘制作工具:Deepin Boot Maker 完整使用指南
  • 高防服务器被攻击后 IP 被封?黑洞解封与清洗策略设置
  • 如何掌握递归与迭代:编程思维深度训练指南
  • Pretext:值得关注的文本排版引擎啡
  • 西门子S7-200 SMART高速计数器实战:从模式配置到脉冲精准捕获
  • 主席树实战:C++实现区间第K小查询(附动态图解与完整代码)
  • 安卓逆向浅浅范围
  • 高防服务器无法远程连接?端口、防火墙与安全组排查
  • 头发干枯毛躁用什么洗发水? - 中媒介