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

详细分析Vue3中的emit用法(子传父)

目录

  • 1. 基本知识
    • 1.1 emit
    • 1.2 defineEmits
  • 2. Demo

1. 基本知识

在 Vue 3 中,emit 是一种机制,用于在子组件中触发事件,并在父组件中监听这些事件

提供一种组件间通信的方式,尤其是在处理父子组件数据传递和交互时非常有用

一共有两种方式

1.1 emit

子组件中使用emit

<template><button @click="handleClick">Click me</button>
</template><script>
export default {name: 'ChildComponent',methods: {handleClick() {this.$emit('custom-event', 'Hello from child');}}
}
</script>

父组件监听子组件:

<template><div><ChildComponent @custom-event="handleCustomEvent" /></div>
</template><script>
import ChildComponent from './ChildComponent.vue';export default {name: 'ParentComponent',components: {ChildComponent},methods: {handleCustomEvent(payload) {console.log(payload); // 输出 'Hello from child'}}
}
</script>

1.2 defineEmits

在 Vue 3 中,还可以使用 Composition API 的 defineEmits 方法来定义和使用 emit

子组件中定义和使用emit:

<template><button @click="emitEvent">Click me</button>
</template><script setup>
import { defineEmits } from 'vue';const emit = defineEmits(['custom-event']);function emitEvent() {emit('custom-event', 'Hello from child with Composition API');
}
</script>

父组件监听子组件:

<template><div><ChildComponent @custom-event="handleCustomEvent" /></div>
</template><script>
import ChildComponent from './ChildComponent.vue';export default {name: 'ParentComponent',components: {ChildComponent},methods: {handleCustomEvent(payload) {console.log(payload); // 输出 'Hello from child with Composition API'}}
}
</script>

2. Demo

完整Demo如下:

  1. 创建子组件:
<template><button @click="emitEvent">Click me</button>
</template><script setup>
import { defineEmits } from 'vue';const emit = defineEmits(['custom-event']);function emitEvent() {emit('custom-event', 'Hello from child with Composition API');
}
</script>
  1. 创建父组件:
<template><div><ChildComponent @custom-event="handleCustomEvent" /><p>{{ message }}</p></div>
</template><script>
import ChildComponent from './ChildComponent.vue';
import { ref } from 'vue';export default {name: 'ParentComponent',components: {ChildComponent},setup() {const message = ref('');function handleCustomEvent(payload) {message.value = payload;}return {message,handleCustomEvent};}
}
</script>
  1. 应用组件:
<template><ParentComponent />
</template><script>
import ParentComponent from './components/ParentComponent.vue';export default {name: 'App',components: {ParentComponent}
}
</script>

主入口文件:

import { createApp } from 'vue';
import App from './App.vue';createApp(App).mount('#app');

相关文章:

  • Java-常见面试题收集(十六)
  • 2024年顶级算法-黑翅鸢优化算法(BKA)-详细原理(附matlab代码)
  • Python基础知识归纳总结
  • 2024 电工杯高校数学建模竞赛(B题)| 平衡膳食食谱 |建模秘籍文章代码思路大全
  • Mac下QT开发环境搭建详细教程
  • 计算机毕业设计 | SpringBoot社区物业管理系统 小区管理(附源码)
  • <MySQL> 【数据类型】
  • ChatGPT、Llama等大模型回答脑筋急转弯
  • 计算机操作系统总结(1)
  • BGP选路规则实验
  • NoSQL Redis配置与优化
  • SD3303A大功率高精度LED驱动芯片3W低功耗高效率工作温度40c+85%
  • 这台电脑无法运行Windows11问题解决方案
  • 类和对象(中)
  • 【qt】初识模型和视图
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • express如何解决request entity too large问题
  • Facebook AccountKit 接入的坑点
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JavaScript 一些 DOM 的知识点
  • javascript从右向左截取指定位数字符的3种方法
  • JS 面试题总结
  • LeetCode算法系列_0891_子序列宽度之和
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • MYSQL 的 IF 函数
  • PAT A1017 优先队列
  • PHP CLI应用的调试原理
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • yii2权限控制rbac之rule详细讲解
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 订阅Forge Viewer所有的事件
  • 给新手的新浪微博 SDK 集成教程【一】
  • 批量截取pdf文件
  • 使用docker-compose进行多节点部署
  • 阿里云移动端播放器高级功能介绍
  • # Java NIO(一)FileChannel
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (done) 声音信号处理基础知识(4) (Understanding Audio Signals for ML)
  • (Forward) Music Player: From UI Proposal to Code
  • (libusb) usb口自动刷新
  • (zhuan) 一些RL的文献(及笔记)
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (十三)Flask之特殊装饰器详解
  • (四)opengl函数加载和错误处理
  • (一)基于IDEA的JAVA基础1
  • (转) RFS+AutoItLibrary测试web对话框
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • *2 echo、printf、mkdir命令的应用
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复