赞
踩
@Watch装饰器,相当于Vue中的监听器 以及 React中使用useEffect监听变量
使用@Watch装饰器,可以监听一个数据的变化,并进行后续的响应。
使用方法:
@Watch(‘回调函数’),写在@State装饰器后(其实写在前面也行,但是写到后面更加清晰也符合规范)。
@State @Watch('change') baseNumber: number = 1
change(){
this.res = Math.pow(this.baseNumber,this.pow)
}
注意
:回调函数中一定不能直接操作监听的数据,会造成死循环
下面是一个综合案例
@Entry @Component struct UseWatch { // 将监听器写到@State装饰器后面 @State @Watch('change') baseNumber: number = 1 @State pow: number = 2 @State res: number = 1 change(){ this.res = Math.pow(this.baseNumber,this.pow) } build() { Column(){ Text(`基数:${this.baseNumber}`) .fontSize(40) .onClick(() => { this.baseNumber++ }) Divider() Text(`次幂:${this.pow}`) .fontSize(40) .onClick(() => { this.pow ++ }) Divider() Text(`结果:${this.res}`) .fontSize(40) } .width('100%') .height('100%') .justifyContent(FlexAlign.Center) } }
运行发现,点击 基数 时,即@Watch监听的数据发生变化时,执行了change函数
但是点击 次幂 时,由于@Watch监听的数据未发生改变,所以没执行change函数
再次点击 基数 时,重新执行change函数
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。