HarmonyOS 鸿蒙Next 父子组件传值问题

HarmonyOS 鸿蒙Next 父子组件传值问题 子组件修改@Link修饰的变量,父组件如何执行相应的操作。类似于vue中子组件发送自定义事件emit()给父组件,这样就可以让父组件在子组件改变相关变量时执行有关操作。

比如一个navbar组件点击了某一个item,父组件就执行相应的网络请求

父组件该如何知道子组件的变量发生了变化,执行相应操作?

望各位大神指点一二

5 回复

@Watch装饰器:状态变量更改通知

更多关于HarmonyOS 鸿蒙Next 父子组件传值问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


如何解决的?

装饰器@Watch装饰器:状态变量更改通知,

已解决

在HarmonyOS中,父子组件之间的传值可以通过@State@Prop@Link等装饰器实现。@State用于组件内部的状态管理,@Prop用于父组件向子组件传递不可变数据,@Link用于父子组件之间的双向数据绑定。

例如,父组件定义一个@State变量,并通过@Prop传递给子组件:

@Entry
@Component
struct ParentComponent {
  @State message: string = 'Hello from Parent'

  build() {
    Column() {
      Text(this.message)
      ChildComponent({ message: this.message })
    }
  }
}

@Component
struct ChildComponent {
  @Prop message: string

  build() {
    Text(this.message)
  }
}

若需要双向绑定,可以使用@Link

@Entry
@Component
struct ParentComponent {
  @State message: string = 'Hello from Parent'

  build() {
    Column() {
      Text(this.message)
      ChildComponent({ message: $message })
    }
  }
}

@Component
struct ChildComponent {
  @Link message: string

  build() {
    Text(this.message)
  }
}

通过@Link,子组件对message的修改会同步到父组件。

回到顶部