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的自动刷新。

在HarmonyOS鸿蒙Next中,监听单例属性的状态改变可以通过@Observed@ObjectLink装饰器实现。首先,使用@Observed装饰单例类,使其成为可观察对象。然后,在需要监听的组件中使用@ObjectLink绑定该单例属性。当单例属性发生变化时,系统会自动触发UI更新。例如:

@Observed
class Singleton {
  public data: string = "Initial Data";
}

@Entry
@Component
struct MyComponent {
  @ObjectLink singleton: Singleton;

  build() {
    Text(this.singleton.data)
      .onClick(() => {
        this.singleton.data = "Updated Data";
      })
  }
}

这样,当singleton.data改变时,UI会自动更新。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!