@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)  
  }  
}

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))

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

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

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

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

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

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

分享
微博
QQ
微信
回复
2024-10-14 17:37:26
相关问题
NAPI执行上层时,如何获取env
2126浏览 • 1回复 待解决
如何在NAPI执行上层时获取env
243浏览 • 1回复 待解决
ArkTS异步机制与执行顺序
1166浏览 • 1回复 待解决
HarmonyOS 怎么实现任务串行顺序执行
254浏览 • 1回复 待解决
如何获知TaskPool执行顺序、优先级?
678浏览 • 0回复 待解决
interface如何调用
818浏览 • 1回复 待解决