HarmonyOS 鸿蒙Next 父子组件传值问题
HarmonyOS 鸿蒙Next 父子组件传值问题
今天在写项目时,遇到一个神奇的问题,问同事他也没遇到过,我们都知道,父子组件单向传值使用的是@Prop,但今天看到的代码里面用的@State,但值确神奇的传过来了,于是写了个demo,发现确实可以用@State接收,有没有大佬能解答一下为什么
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
[@State](/user/State) message: string = '来自父组件的内容';
build() {
Row() {
Column() {
Child({
message: this.message
})
}
.width('100%')
}
.height('100%')
}
}
[@Component](/user/Component)
struct Child {
[@State](/user/State) message: string = "";
build() {
Row() {
Column() {
Text(this.message)
}
.width('100%')
}
.height('100%')
}
}
更多关于HarmonyOS 鸿蒙Next 父子组件传值问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
当然可以传啊,又不是private,只是穿进去子组件中的state是自己管理,不会同步到父组件,父组件的也不会同步到子组件
更多关于HarmonyOS 鸿蒙Next 父子组件传值问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS 鸿蒙Next 父子组件传值问题,可以通过以下几种方式实现:
父组件向子组件传值
- 使用
@Prop
装饰器:在子组件中通过@Prop
接收父组件传递的数据。父组件在模板中通过属性绑定的方式将数据传递给子组件。 - 注意事项:
@Prop
只支持单向同步,且类型受限(如string、number、boolean、enum)。
子组件向父组件传值
- 使用
$emit
方法:子组件通过$emit
方法触发事件,并传递数据给父组件。父组件在模板中监听该事件,并接收传递的数据。 - 示例:子组件中点击按钮后,通过
$emit
方法将数据传递给父组件,父组件在事件处理函数中接收并处理数据。
双向同步
- 使用
@Link
装饰器:当父子组件需要双向同步数据时,可以使用@Link
装饰器。父组件中用于初始化子组件@Link
变量的必须是在父组件中定义的状态变量。 - 注意事项:在父组件中使用子组件时,将父组件的状态变量通过
$
符号传递给子组件,以建立双向关联关系。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。