HarmonyOS 鸿蒙Next 自定义组件时传入值时@Prop @Watch没有触发

发布于 1周前 作者 htzhanglong 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 自定义组件时传入值时@Prop @Watch没有触发

当一个组件接收参数 @Prop @Watch(‘onCountDown’) duration: number = 0时,

直接调用组件 CountDown({ duration: 10000 })  @Watch(‘onCountDown’)没有触发。

setTimeout(() => {
this.totalSeconds = 10000 }, 100)  CountDown({ duration: this.totalSeconds })   

添加定时器让其重新渲染才可以生效,是否有类似于前端VUE框架的watch imediate机制。


更多关于HarmonyOS 鸿蒙Next 自定义组件时传入值时@Prop @Watch没有触发的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复
这个[@prop](/user/prop)监听的数据,在子组件内,watch监听应该是失效的吧,改成[@link](/user/link)试下

初始化时的值,watch装饰器是不会边调用的,可以参考这个:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-watch-V5#观察变化和行为表现

初始化的数据监听,可以通过aboutToAppear生命周期里面查看

更多关于HarmonyOS 鸿蒙Next 自定义组件时传入值时@Prop @Watch没有触发的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在子组件中添加

aboutToAppear(): void {
this.onCountDown()
}

主动调用一次

在HarmonyOS鸿蒙Next中,自定义组件时如果@Prop@Watch没有触发,通常是由于属性绑定或监听设置不当导致的。

  1. 检查属性绑定

    • 确保在父组件中正确使用了自定义组件,并且为需要监听的属性绑定了相应的值。例如,如果自定义组件中有一个名为myProp的属性,那么在父组件中应该这样使用:<custom-component my-prop="{{parentValue}}"></custom-component>
  2. 检查@Prop定义

    • 在自定义组件的脚本中,使用@Prop装饰器来声明需要接收的属性,并确保属性名与父组件中绑定的属性名一致。例如:@Prop(Number) myProp;
  3. 检查@Watch监听

    • 使用@Watch装饰器来监听属性的变化。确保监听的是正确的属性名,并且回调函数可以正确执行。例如:@Watch('myProp') myPropChanged(newValue, oldValue) { /* 处理逻辑 */ }
  4. 确保组件重新渲染

    • 如果属性变化后组件没有重新渲染,检查是否有其他逻辑阻止了渲染或更新。

如果以上步骤都确认无误但问题依旧存在,可能是系统或框架的bug。此时,如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部