HarmonyOS鸿蒙Next中@Watch可以观察到@Consume装饰的状态变量更改吗
3 回复
可以观察的,尝试如下代码。
@Component
struct CompD {
@Consume @Watch('onChange') selectedDate: Date;
onChange() {
console.info("值改变了!!!");
}
build() {
Column() {
Button(`child increase the day by 1`)
.onClick(() => {
this.selectedDate.setDate(this.selectedDate.getDate() + 1)
})
Button('child update the new date')
.margin(10)
.onClick(() => {
this.selectedDate = new Date('2023-09-09')
})
DatePicker({
start: new Date('1970-1-1'),
end: new Date('2100-1-1'),
selected: this.selectedDate
})
}
}
}
@Component
struct CompA {
@Provide selectedDate: Date = new Date('2021-08-08')
build() {
Column() {
Button('parent increase the day by 1')
.margin(10)
.onClick(() => {
this.selectedDate.setDate(this.selectedDate.getDate() + 1)
})
Button('parent update the new date')
.margin(10)
.onClick(() => {
this.selectedDate = new Date('2023-07-07')
})
DatePicker({
start: new Date('1970-1-1'),
end: new Date('2100-1-1'),
selected: this.selectedDate
})
CompD()
}
}
}
更多关于HarmonyOS鸿蒙Next中@Watch可以观察到@Consume装饰的状态变量更改吗的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,@Watch装饰器用于监听状态变量的变化,而@Consume装饰器用于跨组件传递状态变量。@Watch确实可以观察到被@Consume装饰的状态变量的更改。当@Consume装饰的状态变量发生变化时,@Watch装饰的方法会被触发,执行相应的逻辑。这种机制允许开发者在状态变量变化时自动更新UI或执行其他操作,而无需手动监听或触发更新。
在HarmonyOS鸿蒙Next中,@Watch装饰器用于监听状态变量的变化,并在变化时执行指定的回调函数。@Consume装饰器用于跨组件共享状态变量。@Watch可以观察到@Consume装饰的状态变量的更改,因为@Consume本质上是一个状态变量,@Watch会监听其变化并触发回调。因此,当@Consume装饰的状态变量发生变化时,@Watch可以捕获到这一变化并执行相应的逻辑。

