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问题
334浏览 • 1回复 待解决
HarmonyOS WebController存在调用顺序问题
343浏览 • 1回复 待解决
HarmonyOS导出多个问题
454浏览 • 1回复 待解决
HarmonyOS scroll嵌套多个web,显示问题
52浏览 • 1回复 待解决
多个feature模块的问题
1871浏览 • 1回复 待解决
HarmonyOS 如何实现拖动改变ListItem顺序
354浏览 • 1回复 待解决
HarmonyOS 怎么实现任务串行顺序执行
378浏览 • 1回复 待解决
多个设备与智慧生活app绑定问题
14959浏览 • 2回复 待解决
LIKE后跟子查询多个值的问题
3716浏览 • 1回复 待解决
ArkTS异步机制与执行顺序
1525浏览 • 1回复 待解决
@Prop 为什么不能提供默认值啊?
2095浏览 • 1回复 待解决
下载队列如何干预下载顺序
698浏览 • 1回复 待解决