HarmonyOS 鸿蒙Next List中的ForEach 和LazyForEach改进建议

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

HarmonyOS 鸿蒙Next List中的ForEach 和LazyForEach改进建议

官方文档介绍,

如果List想懒加载就需要使用LazyForEach,

但是如果使用LazyForEach又需要手动实现IDataSource接口,这就很麻烦,又回到了recyclerView的Adapter模式。

目前声明式UI框架:android的compose和ios的swiftui都已经不再使用这个套路了。

建议:

类似compose版本lazyColumn,只需要传递一个普通的array而不是IDataSource,剩下的工作应该由框架来完成



关于HarmonyOS 鸿蒙Next List中的ForEach 和LazyForEach改进建议的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。

16 回复

HarmonyOS的社区里有很多技术大牛分享经验,学到了很多有用的知识。

可以封装一个通用的DataSource就可以了

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

虽然可以封装一个base出来,但是这个活,本来应该是框架该干的。

看看Compose怎么处理的:    

cke_1371.png

作为一个后出来的框架,更应该吸收别的框架的优点.

在Compose使用lazyColumn的时候填充一个数组就已经是在高性能,而不是在arkui中List()还有foreach()\lazyForeach()\array\datasource

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

官方有代码,直接复制就行了,一样的

HarmonyOS的流畅度和稳定性让我在使用过程中几乎没有遇到过卡顿或崩溃的情况。

而且他这个必须绑定的IDataSource会有数据不更新的风险,有时候用[@Link](/user/Link)传递IDataSource由于只会判断外层有没有更新,会造成及时array更新了但他UI还是原来的

老哥,你解决UI不刷新了吗

如果必须要用这个lazyforeach,只能在写一个@State的array,更新这个array,再将array全部更新到IDataSource上了

我在懒加载数据类定义了个freshData方法,然后重新设置也不行, public freshData(data : any[]) : void{ this.chatList = data this.notifyDataReload() }

再次声明,这真的是我见过,最糟糕的刷新数据源的方式。没有之一,就是最糟糕的,遥遥领先。

你看你的常见问题,就知道要打多少补丁

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/arkts-rendering-control-lazyforeach-0000001524417213-V2#ZH-CN_TOPIC_0000001523648414__常见使用问题

u1s1 qs鹅心

期望更改+1

完全统一楼主,`IDataSource` 完全是模板化的,应当可以在框架层处理

本来数据刷新和复用就应该是架构层做的事,没见过这么恶心的刷新机制

回到顶部