ArkUI 组件复用
1. 组件复用概述
1.1 基本概念与价值
组件复用是指自定义组件从组件树上移除后被放入缓存池,后续在创建相同类型的组件节点时,直接复用缓存池中的组件对象。
核心价值:
- 性能优化:避免频繁创建和销毁对象,减少内存回收频率
- 效率提升:复用缓存组件直接绑定数据,降低计算开销
- 流畅体验:特别在长列表滑动场景中,确保界面流畅度
1.2 适用场景
组件复用适用于任何发生自定义组件销毁和再创建的场景:
- 滑动场景:List、Grid、WaterFlow、Swiper 等容器中的频繁滑动
- 条件渲染切换:界面中反复切换的控制分支,且子组件树结构复杂
2. 同一列表内的组件复用
2.1 实现原理与机制
ArkUI 通过 @Reusable 装饰器实现组件复用,其核心机制如下:
图:@Reusable 组件从移除到缓存再到复用的完整流程
工作流程:
- 标记为
@Reusable的组件在离开屏幕后,从组件树移除并放入 CustomNode 虚拟节点 - RecycleManager 根据 reuseId 分组回收 CustomNode,形成缓存池
- 新组件需要显示时,优先从缓存池中查找匹配的视图对象并重新绑定数据
2.2 基础开发步骤
实现组件复用需要遵循三个基本步骤:
// 1. 定义可复用组件
@Reusable
@Component
struct ReusableComponent {
@State text: string = ''
// 2. 实现复用回调
aboutToReuse(params: Record<string, Object>): void {
this.text = params.text as string
}
build() {
// 组件构建逻辑
}
}
@Entry
@Component
struct Index {
@State switch: boolean =
: =
() {
() {
(.) {
({ : . }).(.)
}
}
}
}


