HarmonyOS 多个@Prop变化顺序问题

子组件有两个@Prop ,在父组件中使用后,在父组件更新数据,但是先更新的却在后更新的变化之后变化。请问这个@Prop变化时没有先后顺序?

代码如下:

子组件:

@Prop @Watch('stateChange') state: QuantityOfElectricityEnum  
@Prop progress: number  
stateChange() {  
  switch (this.state) {  
    case QuantityOfElectricityEnum.CHARGE:  
    case QuantityOfElectricityEnum.ERROR:  
      this.canvas.clearRect(2, 2.5, this.drawWidth, this.drawHeight);  
      break  
    case QuantityOfElectricityEnum.SHOW_BATTERY:  
      TinLog.e('--------------------drawProgress--------stateChange---------' + this.progress)  
      this.drawProgress()  
      break  
  }  
}

父组件:

let bp = this.subscribe!!.bp  
this.charging = this.subscribe.bp > 100 ? 100 : bp  
if (bp == 238 || bp == 239 || (bp == 240 && bpError)) {  
  this.changingState = QuantityOfElectricityEnum.ERROR  
} else if (this.subscribe.wm == 2) {  
  this.changingState = QuantityOfElectricityEnum.CHARGE  
} else {  
  this.changingState = QuantityOfElectricityEnum.SHOW_BATTERY  
}

使用:

QuantityOfElectricity({ progress: this.charging, state: this.changingState })

最终发现必须给子组件progress也添加@Watch('stateChange')才能保证正确,但先后顺序还是不能保证,

请问如何保证@Prop更新数据的先后顺序。

HarmonyOS
2024-10-22 09:45:46
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

@Prop更新数据的先后顺序是按自组件的修改的顺序来进行的,watch回调方法最好还是用不同名的,用同名的话,可以传名字区分一下,在某个变量变化的时候再触发。

分享
微博
QQ
微信
回复
2024-10-22 17:01:07
相关问题
HarmonyOS 开发@Prop问题
473浏览 • 1回复 待解决
HarmonyOS 首页多个弹窗按顺序弹出
175浏览 • 1回复 待解决
HarmonyOS @Prop参数传递问题
325浏览 • 1回复 待解决
HarmonyOS WebController存在调用顺序问题
747浏览 • 1回复 待解决
HarmonyOS imageknife图片库加载顺序问题
120浏览 • 1回复 待解决
HarmonyOS导出多个问题
837浏览 • 1回复 待解决
HarmonyOS Prop的用法
319浏览 • 1回复 待解决
HarmonyOS CustomDialog显示顺序
97浏览 • 1回复 待解决
多个feature模块的问题
1986浏览 • 1回复 待解决
HarmonyOS scroll嵌套多个web,显示问题
342浏览 • 1回复 待解决
HarmonyOS 多个HAP包跳转的问题
338浏览 • 1回复 待解决
HarmonyOS 使用@Watch观察值变化问题
145浏览 • 1回复 待解决