HARMONYOS的@builderparam的功能及使用案例
一、@BuilderParam 核心功能(一句话总结)@BuilderParam 是 ArkTS 中用于接收 @Builder 构建函数的装饰器,作用是让父组件向子组件动态注入 UI 片段/逻辑,实现组件“插槽(slot)”能力,解耦子组件固定结构、提升复用灵活性。本质:UI 占位符,子组件只定义位置,父组件决定该位置显示什么内容/逻辑核心解决:子组件内部写死 UI/事件,导致所有实例行为一致、无法定制的问题适用:API 9+,支持组件、卡片、元服务开发二、核心规则与语法1. 基础定义规则必须装饰函数类型变量,且只能接收@Builder 装饰的函数(全局/组件内局部)必须显式初始化(默认值),不能留空;可搭配 @Require 强制父组件必须传参函数签名(参数、返回值)必须与传入的 @Builder 完全匹配this 指向:直接传 @Builder → this 指向子组件;用箭头函数包裹 → this 继承父组件(避免 this 丢失)2. 标准语法// 子组件内定义@Componentstruct Child{// 1. 无参 @BuilderParam(默认值为子组件内部@Builder)@BuilderParamcontent:()=void=this.defaultContent;// 2. 带参数 @BuilderParam@BuilderParamcustomBuilder:(param:string)=void=this.defaultCustomBuilder;// 子组件内部默认带参数@Builder(兜底)@BuilderdefaultCustomBuilder(param:string){Text(`默认带参数内容:${param}`).fontSize(16)}// 子组件内部默认@Builder(兜底)@BuilderdefaultContent(){Text("默认内容").fontSize(16)}build(){Column(){// 调用占位符,渲染父组件传入的UIthis.content();this.customBuilder("参数值");}}}@Entry@Componentstruct Index{build(){Column(){//容器组件Child()}}}3. 父组件传递方式(3种)显式参数传递(最常用)@BuilderparentBuilder(){Text("父组件注入内容").fontColor(Color.Red)}@Entry@Componentstruct Parent{build(){Column(){// 直接传@Builder引用(注意this)Child({content:this.parentBuilder})// ✅ 推荐:箭头函数包裹,锁定父组件thisChild({content:()={this.parentBuilder()}})}}}尾随闭包(仅单个@BuilderParam时)子组件只有一个 @Bu
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2501008.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!