HarmonyOS 鸿蒙Next:如何监测@track装饰的变量发生变化?类似@Watch
2 回复
检测业务变化,不涉及到UI
层面,可以直接在viewModel层完成
使用Listener
可以完成在viewModel层进行业务逻辑的处理
class ViewModel {
someValue: number = 10
cbs: ((p:number)=>void)[] = []
addListener(cb: (p:number)=>void) {
this.cbs.push(cb)
}
removeListener(cb: (p:number)=>void) {
let index = this.cbs.indexOf(cb)
this.cbs.splice(index, 1)
}
changeValue( val: number) {
this.someValue = val;
this.cbs.forEach((cb: ((p:number)=>void)) => {
cb(this.someValue)
})
}
}
@Entry
@Component
struct Index {
@State viewModel: ViewModel = new ViewModel()
aboutToAppear(): void {
this.viewModel.addListener((someValue): void=>this.onSomeValueChange(someValue))
}
aboutToDisappear(): void {
this.viewModel.removeListener((someValue): void=>this.onSomeValueChange(someValue))
}
build() {
Row() {
Column() {
Button('赋值').onClick(() => {
this.viewModel.changeValue(40)
})
}
.width('100%')
}
.height('100%')
}
// 触发回调
onSomeValueChange(someValue:number) {
console.log('-----看看变化'+someValue)
}
}
更多关于HarmonyOS 鸿蒙Next:如何监测@track装饰的变量发生变化?类似@Watch的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙)系统中,如果你想要监测使用@track
装饰的变量发生变化,类似于Vue中的@Watch
功能,你可以利用鸿蒙提供的响应式系统和观察者机制。
鸿蒙的响应式系统允许你定义响应式数据,并在数据变化时执行相应的逻辑。虽然鸿蒙没有直接提供与Vue中@Watch
完全对应的装饰器,但你可以通过实现一个观察者模式来达到类似的效果。
具体实现步骤如下:
-
定义响应式变量:使用鸿蒙的响应式API定义你的变量,这些变量会在变化时触发更新。
-
实现观察者逻辑:你可以定义一个观察者函数,该函数会在响应式变量变化时被调用。这通常需要在变量变化时手动触发,或者通过框架提供的生命周期钩子实现。
-
绑定观察者:将你的观察者函数与响应式变量绑定,确保在变量变化时能够执行相应的逻辑。
由于鸿蒙的响应式系统可能随版本更新而有所变化,建议查阅最新的鸿蒙开发文档以获取最准确的实现方法。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,