当前位置: 首页 > news >正文

Vue3-子传父

1. 主组件 App.vue(父组件)

  • 在 App.vue 中,我们先引入了子组件 SonCom,这个小家伙将在父组件中出场。

  • 接着,我们写了一个叫 getMessage 的函数。这个函数的任务很简单——接收子组件传来的消息,然后用 console.log 把它打印出来。它就像一个侦听器,专门接收并显示子组件的情报。

    const getMessage = (msg) => {console.log(msg)
    }
    
  • 然后我们在模板里使用了 <SonCom />,并且绑定了一个事件 @get-message="getMessage"

    <SonCom @get-message="getMessage" />
    
    • 这里的 @get-message="getMessage" 是关键!意思是:“嘿,SonCom,一旦你触发 get-message 这个事件,我就会跑 getMessage 函数!”
    • 注意这个事件名 get-message。Vue 的事件名可以用连字符(-)来写,这是惯例,防止和其他属性混淆。

2. 子组件 son-com.vue(子组件)

  • 在子组件 SonCom 里,我们定义了一个 emit 对象,这个对象通过 defineEmits 创建,用来发送(emit)事件给父组件。这里指定了一个事件名 get-message,就是父组件绑定的那个。

    const emit = defineEmits(["get-message"])
    
  • 还定义了一个叫 sendMsg 的函数。这个函数干啥呢?就是专门用来“发消息”的。

    • 当你调用 sendMsg 时,它会通过 emit 触发 get-message 事件,并且带上一条信息 'this is son message'。这条信息就会跑到父组件 App.vue 里的 getMessage 函数中。
    const sendMsg = () => {emit('get-message', 'this is son message')
    }
    
  • 最后在模板里,放了一个按钮:

    <button @click="sendMsg">触发自定义事件</button>
    
    • 这个按钮的功能就是当你点击它时,执行 sendMsg 函数,触发 get-message 事件,把消息传递给父组件。
    • 点击一下,父组件的 console.log 就能输出子组件传来的信息,简直是一气呵成!

总结

  1. 父组件的 @get-message="getMessage" 监听 get-message 事件,接收到消息就执行 getMessage
  2. 子组件的 emit('get-message', 'this is son message') 触发事件 get-message,并附上信息给父组件。
  3. 所以整个过程就是:点击按钮 -> 子组件发消息 -> 父组件接收到消息并打印。

这样,父子组件就愉快地通过 get-message 事件“对话”了

完整代码:


http://www.mrgr.cn/news/66514.html

相关文章:

  • Java图片转word
  • C 语言标准库 - <assert.h>
  • PCD可视化(C++)
  • 关于 AJAX 与 Promise
  • 六大漏洞管理工具详解:从新手到黑客高手,一篇文章掌握,必备收藏指南!
  • 探索Python新境界:Buzhug库的神秘面纱
  • ORA-00020和ORA-00603报错处理
  • 【算法】递归+深搜:106.从中序与后序遍历序列构造二叉树(medium)
  • B2118 验证子串
  • Swift 开发教程系列 - 第5章:集合类型
  • oracle数据检查方法
  • 多client向同一个pushgateway推送指标被覆盖问题
  • 解密抖音推荐算法:个性化内容背后的技术奥秘
  • 【MongoDB】MongoDB的聚合(Aggregate、Map Reduce)与管道(Pipline) 及索引详解(附详细案例)
  • 一篇文章速通Java开发Stream流(流水线开发附斗地主小游戏综合案例)
  • 一文快速预览经典深度学习模型(一)——CNN、RNN、LSTM、Transformer、ViT
  • Vue:计算属性
  • JavaScript 变量作用域与函数调用机制:var 示例详解
  • SEO
  • 一个最简单的网络编程
  • OpenID Connect 和 OAuth 2.0 有什么不同?
  • Java继承练习
  • C++《list的模拟实现》
  • 通讯录(静态)
  • js基础篇笔记 (万字速通)
  • 【安装配置教程】二、VMware安装并配置ubuntu22.04