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

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

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

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!