智能客服
你问我答,随时在线为你解决问题
@SyncMonitor用于状态管理V2,同步监听状态变量修改,使得状态变量支持深度监听。适用于需要精确监听对象嵌套属性变化、数组元素修改等深层状态变化的场景,解决了传统监听方式无法感知深层属性变化的问题,提升状态管理的精确性和开发效率。
开发指南参考:@SyncMonitor装饰器:状态变量修改同步监听。
从API version 23开始,支持该装饰器。
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';
})
}
}
}