HarmonyOS鸿蒙Next中单例属性状态改变该如何进行监听?
HarmonyOS鸿蒙Next中单例属性状态改变该如何进行监听?
LoginManager
export class LoginManager {
private static instance: LoginManager
private userInfo: LoginInfo | undefined
public static get(): LoginManager {
if (!LoginManager.instance) {
LoginManager.instance = new LoginManager();
}
return LoginManager.instance;
}
}
使用V2版本的状态管理,当LoginManager中的userInfo发生改变时,外部UI该如何监听该属性值的改变?
6 回复
开发者您好,关于您咨询的问题,您可参考@ObservedV2装饰器和@Trace装饰器:类属性变化观测
更多关于HarmonyOS鸿蒙Next中单例属性状态改变该如何进行监听?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
你好。
使用@ObservedV2和@Trace,给你的userInfo类进行装饰。就可以监听到。
1. @ObservedV2
2. class UserInfo {
3. id: number = 0;
4. @Trace numberArr: number[] = [];
5. constructor() {
6. this.id = nextId++;
7. this.numberArr = [0, 1, 2];
8. }
9. }
还没深入了解过V2版本的状态管理,感觉自己又落后了。。。
没事,现在学也不晚。
https://developer.huawei.com/consumer/cn/blog/topic/03175791109302118
【HarmonyOS Next】鸿蒙状态管理V2装饰器详解,
在HarmonyOS鸿蒙Next中,单例属性的状态改变可以通过@Observed
和@ObjectLink
装饰器来实现监听。@Observed
用于标记一个类为可观察的,而@ObjectLink
用于在组件中绑定可观察对象的属性。当被@Observed
标记的类的属性发生变化时,使用@ObjectLink
绑定的组件会自动更新。
例如,定义一个单例类:
@Observed
class Singleton {
public state: boolean = false;
public toggleState(): void {
this.state = !this.state;
}
}
在组件中使用@ObjectLink
绑定该单例类的属性:
@Component
struct MyComponent {
@ObjectLink private singletonState: boolean;
build() {
Text(`State: ${this.singletonState}`)
.onClick(() => {
// 点击时改变状态
getSingleton().toggleState();
});
}
}
当Singleton
类的state
属性发生变化时,MyComponent
中的Text
组件会自动更新显示最新的状态。这种方式可以有效监听单例属性的状态变化,并实现UI的自动刷新。