文档管理中心

@SyncMonitor:状态变量修改同步监听

本文导读

@SyncMonitor用于状态管理V2,同步监听状态变量修改,使得状态变量支持深度监听。适用于需要精确监听对象嵌套属性变化、数组元素修改等深层状态变化的场景,解决了传统监听方式无法感知深层属性变化的问题,提升状态管理的精确性和开发效率。

开发指南参考:@SyncMonitor装饰器:状态变量修改同步监听

说明

从API version 23开始,支持该装饰器。

@SyncMonitor

const SyncMonitor: MonitorDecorator

元服务API: 从API version 23开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

模型约束: 此接口仅可在Stage模型下使用。

展开
类型 说明
MonitorDecorator @SyncMonitor装饰器类型。

错误码:

以下错误码的详细介绍请参见状态管理错误码

展开
错误码ID 错误信息
130001 The path is invalid.

示例:

@Entry
@ComponentV2
struct Index {
  @Local message: string = 'Hello World';
  @Local name: string = 'Tom';

  // 使用@SyncMonitor同时监听message和name的变化
  @SyncMonitor('message', 'name')
  onStrChange(monitor: IMonitor) {
    monitor.dirty.forEach((path: string) => {
      console.info(`${path} changed from ${monitor.value(path)?.before} to ${monitor.value(path)?.now}`);
    });
  }

  build() {
    Column() {
      Text(`message: ${this.message}`)
      Text(`name: ${this.name}`)
      Button('change string')
        .onClick(() => {
          // 修改message,同步触发onStrChange回调
          this.message += '!';
          // 修改name,同步触发onStrChange回调
          this.name = 'Jack';
        })
    }
  }
}
请输入您想要搜索的关键词