如何实现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渲染
206浏览 • 1回复 待解决
HarmonyOS 数据改变刷新页面
508浏览 • 0回复 待解决
Canvas如何触发刷新重复绘制?
816浏览 • 1回复 待解决
class二次刷新渲染数组
651浏览 • 1回复 待解决
ForEach数组发生改变。UI没刷新
411浏览 • 1回复 待解决
UI预览不会自动刷新, 且刷新较慢
438浏览 • 1回复 待解决
数组中元素变更如何触发刷新list?
227浏览 • 1回复 待解决
HarmonyOS 如何实现拖动改变ListItem顺序
252浏览 • 1回复 待解决
如何实现卡片定时刷新和定点刷新
302浏览 • 1回复 待解决
list-item 根据boolean属性 动态设置class
4750浏览 • 1回复 待解决
哪个属性可以改变Text组件字体的粗细
1797浏览 • 1回复 待解决
@State 修饰的变量值改变,界面不刷新
1350浏览 • 1回复 待解决
HarmonyOS Swiper里面的item高度自动刷新
343浏览 • 1回复 待解决