HarmonyOS 声明式UI中可以通过@Watch来监测某个类中值的变化,普通的类中是否存在类似的机制来监测某个类中值的变化

Consulting description:声明式UI中可以通过@Watch来监测某个类中值的变化,普通的类中是否存在类似的机制来监测某个类中值的变化。

Scenario:声明式UI中可以通过@Watch来监测某个类中值的变化,普通的类中是否存在类似的机制来监测某个类中值的变化。

HarmonyOS
2024-12-23 15:31:53
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

语言特性不支持,可以用getter和setter实现类似效果,示例参考如下:

let privateData: ESObject = new WeakMap();

class Observable {
  constructor(value: ESObject) {
    privateData.set(this, { value: value }); // 将私有数据存储在 WeakMap 中
  }

  get value() {
    return privateData.get(this).value;
  }

  set value(newValue: ESObject) {
    let data: ESObject = privateData.get(this);
    console.log(`Value changed from ${data.value} to ${newValue}`);
    data.value = newValue;
  }
}

//使用
Text(this.message)
  .fontSize(50)
  .fontWeight(FontWeight.Bold)
  .onClick(() => {
    let observable = new Observable(10)
    observable.value = 20 //会输出 Value changed from 10 to 20
  })
分享
微博
QQ
微信
回复
2024-12-23 18:26:12
相关问题
HarmonyOS 如何通过反射创建某个
531浏览 • 1回复 待解决
ArkTS继承机制是怎样?
655浏览 • 1回复 待解决
HarmonyOS 如何监听某个变量是否变化
414浏览 • 1回复 待解决