@Watch装饰器的回调执行顺序

1. 组件定义一个@Watch装饰器修饰的状态变量

@Component  
struct TabComponent {  
  private title: string = ''  
  private index: number = 0  
  @Prop @Watch('onChange') state: string  
  
  build() {  
    Column() {  
      Text(this.title)  
    }  
  }  
  
  onChange() {  
    console.log('test', this.index, this.state)  
  }  
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

2.页面中包含两个该组件。

TabContent() {  
  TabComponent({  
    title: this.tabs[0],  
    index: 0,  
    state: this.tabState0  
  })  
}.tabBar(this.tabBuilder(this.tabs[0], 0))  
  
TabContent() {  
  TabComponent({  
    title: this.tabs[1],  
    index: 1,  
    state: this.tabState1  
  })  
}.tabBar(this.tabBuilder(this.tabs[1], 1))
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

3.先修改第二个组件的状态变量,再修改第一个组件的状态变量。

this.tabState1 = 'hide'        this.tabState0 = 'show'
  • 1.

期望结果:第二个组件的回调函数先执行。

实际结果:第一个组件的回调函数先执行。

HarmonyOS
2024-10-14 11:04:14
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
put_get

状态变量改变,会导致应用了此状态变量的组件刷新,就是会根据组件的先后次序依次刷新,然后触发相应组件的@Watch回调, 并不是按照button.onClick()改变状态变量的先后次序来刷新并触发回调的。

分享
微博
QQ
微信
回复
2024-10-14 17:37:26
相关问题
HarmonyOS Watch没有
821浏览 • 1回复 待解决
HarmonyOS @Watch方法没有改变
640浏览 • 1回复 待解决
HarmonyOS zlib.compressFile不执行
559浏览 • 1回复 待解决
HarmonyOS Scroll方法执行改变
788浏览 • 1回复 待解决
NAPI执行上层时,如何获取env
3146浏览 • 1回复 待解决
如何在NAPI执行上层时获取env
805浏览 • 1回复 待解决
ArkTS异步机制与执行顺序
3131浏览 • 1回复 待解决
HarmonyOS 传感时间间隔问题
755浏览 • 1回复 待解决