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++; }) } } }