在 OpenHarmony(ArkUI)开发中,ListView 崩溃通常是几类常见原因导致的。下面按「最常见 → 次常见」给你归纳,并给出对应解决办法。
List() {
ForEach(this.listData, (item) => {
ListItem() {
Text(item.name)
}
})
}
❌ 问题:
listData 为 undefineditem.name 不存在✅ 解决:
if (!this.listData) {
this.listData = []
}
或使用安全写法:
Text(item?.name ?? '')
ForEach(this.listData, item => { ... })
❌ 崩溃原因:
✅ 正确写法:
ForEach(
this.listData,
(item) => { ... },
(item) => item.id // 必须唯一
)
this.listData.push(newItem)
❌ 问题:
✅ 解决:
this.listData = [...this.listData, newItem]
❌ 错误示例:
ListItem() {
List() { } // 不推荐直接嵌套
}
✅ 建议:
ListItem + ColumnLazyForEachlayoutWeightScroll 嵌套 List✅ 推荐结构:
Column() {
List() {
ForEach(...)
}
.layoutWeight(1)
}
❌ 万级数据直接 ForEach → 崩溃 / 卡死
✅ 解决:
LazyForEach(this.dataSource, item => {
ListItem() { ... }
}, item => item.id)
ArkUI / JS CrashList + 1 条数据console.log(JSON.stringify(this.listData))
你可以补充:
我可以直接帮你 定位到是哪一行导致的崩溃。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。