HarmonyOS鸿蒙Next中@Watch可以观察到@Consume装饰的状态变量更改吗

HarmonyOS鸿蒙Next中@Watch可以观察到@Consume装饰的状态变量更改吗 @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可以捕获到这一变化并执行相应的逻辑。

回到顶部