HarmonyOS 鸿蒙Next如何处理Lazyforeach数据为空的切换

发布于 1周前 作者 songsunli 来自 鸿蒙OS

HarmonyOS 鸿蒙Next如何处理Lazyforeach数据为空的切换 我想做一个懒加载列表

产品要求数据为空时需要有个空白占位显示。

if (this.pageController?.page.totalPage === 0) {
  this.emptySlot()
} else {
  LazyForEach(this.data, (item: object) => {
    this.listUnit(item)
  }, (item: object) => item[this.keyName])
}

我本来想按照上面的这种切换去写,但是会导致数据获取后只显示占位符

各位有碰到类似情况的,是如何解决的?


更多关于HarmonyOS 鸿蒙Next如何处理Lazyforeach数据为空的切换的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

LazyForEach必须使用DataChangeListener对象进行更新,对第一个参数dataSource重新赋值会异常;dataSource使用状态变量时,状态变量改变不会触发LazyForEach的UI刷新[https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-rendering-control-lazyforeach-V5]

所以你这边数据获取后,需要主动通知控制器数据变化,比如文档示例代码里的notifyDataChange

更多关于HarmonyOS 鸿蒙Next如何处理Lazyforeach数据为空的切换的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我通知了,是只要主动调用DataChangeListener中的listener吗?

解决了,应该是我没有用observed,导致我里面的长度变量没啥反应,

在HarmonyOS鸿蒙Next系统中处理Lazyforeach数据为空的切换,可以采取以下步骤直接操作数据逻辑和UI更新:

  1. 数据准备与检查

    • 在使用Lazyforeach之前,先检查数据源是否为空或null。
    • 如果数据源为空,可以直接设置一个默认的占位数据或界面状态,如显示“暂无数据”。
  2. UI更新逻辑

    • 利用鸿蒙系统的数据绑定机制,当数据源发生变化时,自动触发UI更新。
    • 如果数据源由非空变为空,或反之,通过条件渲染来切换显示不同的UI组件(如有数据则显示列表,无数据则显示提示信息)。
  3. 空数据状态处理

    • 在Lazyforeach组件外层包裹一个条件判断,当数据源为空时,不渲染Lazyforeach,而是渲染一个提示视图。
    • 确保在数据源更新为空时,能够即时移除Lazyforeach的渲染,避免界面显示异常。
  4. 性能优化

    • 监听数据源的变化,仅在数据真正变化时触发UI更新,避免不必要的性能开销。

通过上述步骤,可以有效处理HarmonyOS鸿蒙Next系统中Lazyforeach数据为空时的切换问题。如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部