HarmonyOS 鸿蒙Next 父子组件传值问题
HarmonyOS 鸿蒙Next 父子组件传值问题
子组件修改@Link修饰的变量,父组件如何执行相应的操作。类似于vue中子组件发送自定义事件emit()
给父组件,这样就可以让父组件在子组件改变相关变量时执行有关操作。
比如一个navbar组件点击了某一个item,父组件就执行相应的网络请求
父组件该如何知道子组件的变量发生了变化,执行相应操作?
望各位大神指点一二
5 回复
@Watch装饰器:状态变量更改通知
更多关于HarmonyOS 鸿蒙Next 父子组件传值问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
如何解决的?
已解决
在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
的修改会同步到父组件。