在 OpenHarmony(ArkUI) 中,列表组件的“复用”主要指 ListItem 的视图复用机制,用于提升长列表性能和内存效率。下面按常见场景给你说明。
OpenHarmony 的 List + ForEach / LazyForEach 默认支持 Item 复用:
List() {
ForEach(this.dataList, (item) => {
ListItem() {
Text(item.title)
}
}, item => item.id)
}
✅ 特点:
ListItem 会被回收⚠️ 注意:
item => item.id)当数据量很大(上千条)时,用 LazyForEach 才是真正的“按需创建 + 复用”。
List() {
LazyForEach(this.dataSource, (item) => {
ListItem() {
Text(item.title)
}
}, item => item.id)
}
class MyDataSource extends BasicDataSource {
totalCount(): number {
return this.data.length
}
getData(index: number) {
return this.data[index]
}
}
✅ 优势:
OpenHarmony 支持 自定义组件复用,适合复杂 Item。
@Reusable
@Component
struct ItemView {
@State title: string = ''
aboutToReuse(params: { title: string }) {
this.title = params.title
}
build() {
Text(this.title)
}
}
List() {
LazyForEach(this.dataSource, (item) => {
ListItem() {
ItemView({ title: item.title })
}
}, item => item.id)
}
✅ 复用流程:
aboutToReusebuild@State / @Prop 控制状态| 场景 | 推荐方式 |
|---|---|
| 少量数据 | ForEach |
| 长列表 | LazyForEach |
| 复杂 Item | @Reusable |
| 动态高度 | 预估高度 + 缓存 |
如果你愿意,我可以:
你现在是做哪种列表?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。