HarmonyOS 关于状态变量深层次响应的问题

当状态变量是一个对象时,只有对象本身修改或者对象的第一级属性修改,才会触发响应更新UI,如果对象的第一级属性是另一个对象,这里暂且称为深层次对象,那么修改深层次对象的属性,如何做到响应式的效果?试着用文档中的@Observed装饰器测试,但是这个装饰器只能用在父子组件传递参数时生效,如果是在同一个组件中,如何做到深层次对象的响应式效果?

HarmonyOS
2024-12-27 15:31:42
723浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
aquaa

使用@ObservedV2装饰的类中被@Trace装饰的属性具有被观测变化的能力,当该属性值变化时,会触发该属性绑定的UI组件刷新。在嵌套类中使用@Trace装饰的属性具有被观测变化的能力。具体代码详情:

@ObservedV2
class Son {
  @Trace age: number = 100;
}
class Father {
  son: Son = new Son();
}
@Entry
@Component
struct Index {
  father: Father = new Father();
  build() {
    Column() {
      // 当点击改变age时,Text组件会刷新
      Text(`${this.father.son.age}`)
        .onClick(() => {
          this.father.son.age++;
        })
    }
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
分享
微博
QQ
微信
回复
2024-12-27 17:41:14
相关问题
HarmonyOS 如何进行深层次数据更新
1053浏览 • 1回复 待解决
HarmonyOS 状态变量不刷新问题
1604浏览 • 1回复 待解决
关于状态变量@state必须知道
2200浏览 • 1回复 待解决
HarmonyOS constraintSize支持状态变量
955浏览 • 1回复 待解决
HarmonyOS taskpool参数是状态变量crash
673浏览 • 1回复 待解决
状态变量和常规变量有什么区别?
1272浏览 • 2回复 待解决
ArkTS中如何监听状态变量变化?
1999浏览 • 1回复 待解决