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

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

HarmonyOS
2024-06-11 20:15:22
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Nicrosoft

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二次刷新渲染数组
335浏览 • 1回复 待解决
Canvas如何触发刷新重复绘制?
376浏览 • 1回复 待解决
list-item 根据boolean属性 动态设置class
3423浏览 • 1回复 待解决
如何实现背景跟随文字大小改变
167浏览 • 1回复 待解决
返回页面时不触发aboutToAppear
1435浏览 • 1回复 待解决
如何实现应用的屏幕自动旋转
891浏览 • 1回复 待解决
如何使用Swiper组件实现下拉刷新
185浏览 • 1回复 待解决
属性动画如何实现宽高动画效果
700浏览 • 1回复 待解决
页面导航如何实现A B两个页面叠层
290浏览 • 1回复 待解决