HarmonyOS鸿蒙Next中repeat官方示例代码运行后与文档截图不一致
HarmonyOS鸿蒙Next中repeat官方示例代码运行后与文档截图不一致 求解,拷贝了官方示例代码,运行后列表数据显示不出来,不知道是哪里的问题。用的mate60 v5.1.0
代码如下:
@Entry
@ComponentV2
struct RepeatLazyLoadingLongData {
// 假设数据源总长度较长,为1000。初始数组未提供数据。
@Local arr: Array<string> = [];
scroller: Scroller = new Scroller();
build() {
Column({ space: 5 }) {
// 初始显示位置为index = 100,数据可通过懒加载自动获取。
List({ scroller: this.scroller, space: 5, initialIndex: 100 }) {
Repeat(this.arr)
.virtualScroll({
// 期望的数据源总长度为1000。
onTotalCount: () => { return 1000; },
// 实现数据懒加载。
onLazyLoading: (index: number) => { this.arr[index] = index.toString(); }
})
.each((obj: RepeatItem<string>) => {
ListItem() {
Row({ space: 5 }) {
Text(${obj.index}: Item_${obj.item})
}
}
.height(50)
})
}
.height(‘80%’)
.border({ width: 1})
// 显示位置跳转至index = 500,数据可通过懒加载自动获取。
Button(‘ScrollToIndex 500’)
.onClick(() => { this.scroller.scrollToIndex(500); })
}
}
}
文档位置如下:

更多关于HarmonyOS鸿蒙Next中repeat官方示例代码运行后与文档截图不一致的实战教程也可以访问 https://www.itying.com/category-93-b0.html
额。。我是鸿蒙6,你的代码运行是有效果的。你要不试试在模拟器上跑一遍或者升级一下系统试试?
更多关于HarmonyOS鸿蒙Next中repeat官方示例代码运行后与文档截图不一致的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
哈哈哈,文档里有这句话没注意到。“Repeat数据精准懒加载特性从API version 19开始支持”,
那就是系统版本有点低,发现问题了就好,加油,
初始化几条数据,也只会显示几条 。。。就很奇怪,
鸿蒙Next中repeat示例运行与文档不一致,可能是API版本差异或示例代码未及时更新。请核对HarmonyOS SDK版本是否与文档匹配,并检查示例代码是否针对当前API级别。文档截图可能基于特定预览版,公开版本可能存在界面渲染或行为调整。建议直接查阅最新官方示例仓库获取准确代码。
问题可能出在数据初始化和懒加载的时机上。根据你提供的代码,@Local arr: Array<string> = [] 初始化为空数组,而 onLazyLoading 回调仅在滚动到对应索引时触发,初始渲染时可能没有触发数据加载。
建议检查以下几点:
- 初始数据加载:
initialIndex设置为 100,但初始数组为空,可能导致列表无法渲染。可以尝试在aboutToAppear生命周期中预先加载部分数据,例如前 20 条。 - 懒加载回调验证:在
onLazyLoading中添加日志,确认回调是否被触发及索引是否正确。 - 数据绑定更新:
@Local装饰器在数据变化时可能不会自动触发 UI 更新。可以尝试使用@State装饰器替代@Local,确保数据变化时界面同步刷新。
修改示例:
@State arr: Array<string> = [];
aboutToAppear() {
// 预先加载初始数据
for (let i = 0; i < 20; i++) {
this.arr[i] = i.toString();
}
}
如果问题仍然存在,请检查开发环境版本是否与示例兼容,并确认 Repeat 组件在 HarmonyOS Next 中的具体使用限制。

