如何实现Class单个属性改变 自动触发页面刷新

如何实现Class单个属性改变 自动触发页面刷新

HarmonyOS
2024-06-11 20:15:22
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
每天睡满八小时

1.首先查找系统提供的API,发现系统提供了一个@Observed类装饰器可以拿来用。

2.参考系统提供的API,直接给SongItemData增加一个Observed装饰器,如图:

3.后来发现这样直接加的话,一旦属性有改变,会刷新SongItemData所有的属性绑定的页面,太耗性能,我们的目标是某个属性改变,刷新某个属性绑定的页面,而不是所有属性。对上面进行了改版,新增了一个有Observed修改的属性类,可以完美实现针对属性改变刷新对应的页面,如图1,图2:

4.item页面使用的时候需要使用@ObjectLink的变量接收下,然后在页面上使用,如图:

5.最后DownloadSongsController持有数据列表songList<SongItemData>,仅需要刷新SongItemData中的ObservedBoolean属性就可以了,页面也会跟着变化,如下图:

总结:这里介绍了系统API中的@Observed类装饰器在具体业务中的使用。

分享
微博
QQ
微信
回复
2024-06-12 16:49:49
相关问题
嵌套Class属性变化无法触发UI渲染
319浏览 • 1回复 待解决
HarmonyOS 数据改变刷新页面
732浏览 • 0回复 待解决
class二次刷新渲染数组
748浏览 • 1回复 待解决
Canvas如何触发刷新重复绘制?
982浏览 • 1回复 待解决
ForEach数组发生改变。UI没刷新
603浏览 • 1回复 待解决
UI预览不会自动刷新, 且刷新较慢
695浏览 • 1回复 待解决
HarmonyOS 单个页面防截屏问题
11浏览 • 1回复 待解决
数组中元素变更如何触发刷新list?
403浏览 • 1回复 待解决