2 回复
哈哈,@Watch就像个“监控摄像头”,当数据变化时自动触发函数。比如:
@Watch(‘count’) onCountChange() { console.log(‘老板,count被改了!’) }
只要count的值一变,它就会大喊:“有内鬼,终止交易!”(误)其实就是执行onCountChange啦~
更多关于鸿蒙Next中@Watch如何使用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next(HarmonyOS Next)中,@Watch 是一个装饰器,用于监听组件中状态变量的变化。当被装饰的变量发生变化时,系统会自动触发指定的回调函数,实现数据变化时的响应式更新。
基本用法
- 定义状态变量:使用
@State或其他状态装饰器声明变量。 - 添加
@Watch:在需要监听的状态变量上添加@Watch装饰器,并指定回调函数名。 - 定义回调函数:回调函数需在组件中定义,当变量变化时自动执行。
代码示例
@Entry
@Component
struct WatchExample {
@State @Watch('onCountUpdated') count: number = 0; // 监听 count 变化,触发 onCountUpdated
// 回调函数
onCountUpdated() {
console.log('Count updated to: ' + this.count);
}
build() {
Column() {
Text('Count: ' + this.count)
.fontSize(20)
Button('Increase')
.onClick(() => {
this.count += 1; // 点击按钮改变 count,触发 @Watch 回调
})
}
.padding(20)
.width('100%')
}
}
注意事项
- 回调函数名:需为字符串形式(如
'onChange'),且函数需在组件内定义。 - 性能:避免在回调中执行复杂操作,以防影响渲染性能。
- 适用场景:适用于状态变化后需要执行额外逻辑(如日志、数据同步等)的情况。
通过 @Watch,可以简洁地实现状态监听,增强代码的可维护性。

