HarmonyOS 非UI类中改变State装饰属性,无法触发UI渲染

页面StateDemo有一个StateComponent组件,该组件对应的ViewModel类StateViewModel中有个hidden属性来控制StateComponent组件的按钮隐藏/显示,现象如下:

1、由StateComponent组件内部点击事件调用StateViewModel的changeHidden方法,按钮能正常隐藏/显示

2、由ViewModel类的定时器调用changeHidden方法,无法控制按钮正常隐藏/显示

HarmonyOS
2024-12-20 17:48:27
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
shlp

在状态管理中,使用@Observed装饰类后,会给该类使用一层“代理”进行包装。当在组件中改变该类的成员变量时,会被该代理进行拦截,在更改数据源中值的同时,也会将变化通知给绑定的组件,从而实现观测变化与触发刷新。当开发者在类的构造函数中对成员变量进行赋值或者修改时,此修改不会经过代理(因为是直接对数据源中的值进行修改),也就无法被观测到。所以,如果开发者在类的构造函数中使用定时器修改类中的成员变量,即使该修改成功执行了,也不会触发UI的刷新。参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-observed-and-objectlink-0000001774279618#ZH-CN_TOPIC_0000001811157490__在observed装饰类的构造函数中延时更改成员变量

分享
微博
QQ
微信
回复
2024-12-20 19:26:26
相关问题
嵌套Class的属性变化无法触发UI渲染
719浏览 • 1回复 待解决
HarmonyOS dialog在组件无法弹出
493浏览 • 1回复 待解决
HarmonyOSUI描述中观测变化
425浏览 • 1回复 待解决
ForEach数组发生改变UI没刷新
1222浏览 • 1回复 待解决