鸿蒙应用开发中@Builder与@LocalBuilder有何区别示例演示?
摘要:【学习目标】 理解 @Builder 设计初衷,明确与 @Component 核心差异; 掌握 @Builder 两种定义方式、参数传递(按值按引用)规则; 掌握 @Builder 高级场景(嵌套、this指向)实战用法; 掌握 @Bui
【学习目标】
理解 @Builder 设计初衷,明确与 @Component 核心差异;
掌握 @Builder 两种定义方式、参数传递(按值/按引用)规则;
掌握 @Builder 高级场景(嵌套、this指向)实战用法;
掌握 @BuilderParam UI 插槽原理与使用方法,实现组件 UI 内容灵活定制;
掌握 @LocalBuilder 用法、参数传递与限制,理解其固定this、维持组件父子关系的核心特性;
能够清晰对比 @Builder 与 @LocalBuilder,在实际开发中正确选型。
一、Builder 核心认知
1.1 什么是 @Builder
@Builder 用于封装一段UI结构,仅负责UI渲染,无独立实例、无状态、无生命周期,不会加入组件树,编译阶段会直接内联展开,是组件内/全局复用UI片段的最优轻量方案。
1.2 为什么需要 @Builder
我们已经掌握 @Component 封装可复用UI,适用于独立功能、带业务逻辑、带生命周期的页面/组件。
但开发中存在大量纯UI结构、无状态、无业务、无生命周期的复用片段例如 列表内固定骨架图,页面内重复UI区块。
这类片段不需要独立实例、状态、生命周期,使用 @Component 会造成额外实例开销,粒度过细。因此 ArkTS 提供最轻量UI复用方案:@Builder 自定义构建函数,专注细粒度UI复用,几乎无额外性能消耗。
1.3 @Builder 与 @Component 核心区别
特性
@Builder
@Component
本质
UI构建函数
独立自定义组件
实例
无实例
有独立组件实例
状态支持
不能声明@State
支持@State、@Prop等状态
生命周期
无生命周期
拥有完整生命周期
调用方式
直接调用
作为组件使用
适用场景
纯UI结构复用
功能组件/页面/业务模块
刷新范围
随所属组件整体刷新,无独立刷新
可独立响应式刷新
调用位置
只能在build()内部使用
任意生命周期与场景均可使用
1.4 @Builder 两种定义形式
组件内 @Builder:仅当前组件内使用,可直接访问组件成员变量与状态,跟随组件刷新而刷新;
全局 @Builder:整个工程通用,不依赖任何组件实例,不能访问this,所有数据必须通过参数传递。
