ArkTs学习之ArkTS装饰器@Watch装饰器(六)

一、 @Watch装饰器

@Watch用于对状态变量的监听。如果需要关注某个状态变量的值是否改变,可以使用@Watch为状态变量设置回调函数。

❗️被那些装饰器修饰的变量就成为状态变量。

1. @Watch装饰器的特点

当观察到状态变量的变化对应的@Watch的回调方法将被触发。

如果在@Watch的方法里改变了其他的状态变量,也会引起状态变更和@Watch的执行;

在第一次初始化的时候,@Watch装饰的方法不会被调用,即认为初始化不是状态变量的改变。

❗️不要在@Watch的回调函数中,修改自身监听的状态变量,否则会造成死循环

❗️@Watch在ArkUI框架内部判断数值有无更新使用的是严格相等(===),遵循严格相等规范。当在严格相等为false的情况下,就会触发@Watch的回调

❗️在第一次初始化的时候,@Watch装饰的方法不会被调用,即认为初始化不是状态变量的改变。只有在后续状态改变时,才会调用@Watch回调方法

2. @Watch装饰器使用示例

@Entry
@Component
struct FirstComponent {
  // 使用@Watch监听count状态变量的变化
  @State @Watch("myCallback") count: number = 0;
  @State message: string = "@Watch回调函数被第0次调用";

  // 定义一个@Watch的回调函数
  myCallback() {
    this.message = `@Watch回调函数被第${this.count}次调用`
  }

  build() {
    Column() {
      Text(this.message)
      Button("点击count+1")
        .onClick(() => {
          this.count++;
        })
    }
  }
}

 

posted on 2024-04-01 23:55  梁飞宇  阅读(448)  评论(0)    收藏  举报