鸿蒙Next @Watch功能如何使用
刚升级到鸿蒙Next系统,发现新增了@Watch功能,但不太清楚具体怎么用。这个功能是做什么的?在哪些场景下可以使用?需要怎么设置才能开启?有没有详细的操作步骤或者注意事项?求大佬解答!
2 回复
鸿蒙Next的@Watch?简单说就是“盯梢”变量!当被监视的数据一变,立刻触发回调函数,就像给变量装了警报器。用法:在变量前加@Watch(函数名),数据一动,函数就自动执行。比如@Watch(onCountChange) count = 0,count变,onCountChange就干活。省得手动监听,真香!
更多关于鸿蒙Next @Watch功能如何使用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
鸿蒙Next(即HarmonyOS NEXT)中的 @Watch 装饰器用于监听状态变量的变化,当变量值改变时自动触发指定的回调函数。它适用于 @State、@Link、@Prop、@ObjectLink 等装饰的变量。
使用方法:
- 定义状态变量:使用
@State等装饰器声明需要监听的数据。 - 添加
@Watch:在状态变量上使用@Watch('回调函数名'),指定变化时触发的回调。 - 编写回调函数:在组件中定义回调函数,接收新旧值作为参数。
示例代码:
@Entry
@Component
struct WatchExample {
@State @Watch('onCountUpdated') count: number = 0
// 监听回调函数
onCountUpdated(propName: string, newValue: number, oldValue: number): void {
console.log(`属性 ${propName} 从 ${oldValue} 变为 ${newValue}`)
}
build() {
Column() {
Text(`计数: ${this.count}`)
.fontSize(30)
Button('增加')
.onClick(() => {
this.count += 1 // 触发 @Watch 回调
})
}
.width('100%')
.padding(20)
}
}
注意事项:
- 回调函数参数顺序固定为:
(propName: string, newValue: T, oldValue: T)。 - 避免在回调中直接修改被监听变量,可能导致循环更新。
- 支持同时监听多个属性,例如
@State @Watch('funcA') @Watch('funcB') value: number。
通过 @Watch 可以方便地实现数据变化时的响应逻辑,如验证、日志记录或触发其他操作。

