LazyForEach 数据懒加载
头像 wuwuwu 2026-05-28 11:08:06    发布
1 浏览 0 点赞 0 收藏

1. 核心作用


  • 只渲染可视区域 + 前后缓存的列表项
  • 滑出屏幕的组件会被销毁回收,降低内存
  • 适合长列表、海量数据场景

2. 支持容器(只有这些才真懒加载)


  • List / ListItemGroup
  • Grid
  • Swiper
  • WaterFlow
  • 其他容器用 LazyForEach 依然全量加载

3. 必背使用限制


  • 必须放在上述懒加载容器内
  • 一个容器里只能有一个 LazyForEach
  • 每个 item 必须只有一个根组件
  • key 必须唯一且稳定,重复 key 必乱
  • 数据源必须实现 IDataSource 接口
  • 不能直接赋值 dataSource,必须用 notify 通知更新
  • 子组件必须设置明确宽高,否则懒加载失效

4. 三要素语法

ets


LazyForEach(
  数据源: IDataSource,
  item生成函数: (item, index) => 组件,
  key生成函数: (item, index) => string
)



5. 数据源规则(必须实现)

实现 IDataSource 四个方法:


  • totalCount ():总数
  • getData (index):取第几条
  • registerDataChangeListener:注册监听
  • unregisterDataChangeListener:注销监听
  • 更新用 notify 系列:
  • notifyDataAdd (index) 新增
  • notifyDataDelete (index) 删除
  • notifyDataChange (index) 修改单项
  • notifyDataMove (from, to) 移动
  • notifyDataReload () 全量刷新
  • notifyDatasetChange (操作数组) 批量精准更新

6. key 生成规则


  • 唯一:不重复
  • 稳定:数据不变 key 不变
  • 推荐:item.iditem + index
  • 禁止:固定字符串、Date.now () 等每次都变的值

7. 数据更新方式


  • 增:notifyDataAdd
  • 删:notifyDataDelete
  • 改:notifyDataChange
  • 移:notifyDataMove
  • 全更:notifyDataReload
  • 批量精准:notifyDatasetChange

8. 高级优化


  • @Reusable / @ReusableV2:列表项复用
  • @Observed + @ObjectLink:深度监听对象属性,只刷新用到的部分
  • @ObservedV2 + @Trace:状态管理 V2 深度观测
  • cachedCount:设置前后缓存条数,滑动更丝滑
  • List + onMove:实现拖拽排序

9. 常见坑(必看)


  1. 删除后删错项 原因:index 缓存未更新 解决:key 用 item+index,删除后 reload
  2. 图片闪烁 原因:改内容导致 key 变化,重建整个 item 解决:用 @Observed+@ObjectLink 只刷新文本,key 用固定 index
  3. @ObjectLink 不刷新 原因:只监听一级属性,深层嵌套不触发 解决:重新赋值一级对象
  4. 懒加载失效 原因:子组件没给高度 / 宽度,容器认为全部可见 解决:给 item 固定 height
  5. 滚动到底闪烁 原因:用了 notifyDataReload 解决:改用 notifyDatasetChange 精准添加


©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
HarmonyOS
头像

wuwuwu

我还没有写个人简介......

2

帖子

0

提问

0

粉丝

关注
最新发布

鸿蒙 ArkTS 列表渲染核心总结

2026-05-27 15:23:02    发布
热门推荐
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除

京ICP备:2022009079号-2

京公网安备:11010502051901号

ICP证:京B2-20230255