HarmonyOS鸿蒙Next中多层嵌套类对象监听
HarmonyOS鸿蒙Next中多层嵌套类对象监听
介绍
本示例介绍使用@Observed装饰器和@ObjectLink装饰器来实现多层嵌套类对象属性变化的监听。
demo详情链接
https://gitee.com/scenario-samples/variable-watcher
3 回复
在HarmonyOS鸿蒙Next中,多层嵌套类对象监听可以通过@Observed
和@ObjectLink
装饰器实现。@Observed
用于标记需要被观察的类,@ObjectLink
用于在子组件中绑定父组件的被观察对象。当被观察对象的属性发生变化时,系统会自动更新相关UI。
例如,定义一个多层嵌套类:
@Observed
class InnerClass {
value: string = '';
constructor(value: string) {
this.value = value;
}
}
@Observed
class OuterClass {
inner: InnerClass;
constructor(inner: InnerClass) {
this.inner = inner;
}
}
在组件中使用@ObjectLink
绑定嵌套对象:
@Component
struct ChildComponent {
@ObjectLink inner: InnerClass;
build() {
Text(this.inner.value)
}
}
@Component
struct ParentComponent {
@State outer: OuterClass = new OuterClass(new InnerClass('Initial Value'));
build() {
Column() {
ChildComponent({ inner: this.outer.inner })
Button('Change Value').onClick(() => {
this.outer.inner.value = 'New Value';
})
}
}
}
当点击按钮时,ChildComponent
中的Text
会自动更新为New Value
。
在HarmonyOS鸿蒙Next中,多层嵌套类对象的监听可以通过@Observed
和@ObjectLink
装饰器实现。@Observed
用于标记可观察的类,而@ObjectLink
用于在子组件中引用父组件的观察对象。当嵌套对象发生变化时,系统会自动触发UI更新。例如,父组件使用@Observed
标记嵌套对象,子组件通过@ObjectLink
引用该对象,实现对多层嵌套对象的监听与响应。