vue3 defineEmits

简介:用于父子组件通信时,子组件向父组件传递数据,不需要被导入即可使用,会在编译 <script setup>语法块时一同编译。注意的是 defineEmits 只能在 <script setup>的顶层使用

使用

1、定义子组件

vue 复制代码
// 子组件 child.vue
 
<template>
  <button @click="handelClick">传递给父级</button>
  <button @click="add">加</button>
  <button @click="decrease">减</button>
</template>
 
<script setup lang="ts">

const emits = defineEmits(['clickFn', 'add', 'decrease'])// 定义一个或多个自定义事件

const handelClick = () => {
  emits('clickFn', { name: '张三', age: 18,id: 1 }) // 第一个参数为自定义事件名  第二个参数为要传递的数据
}
const add = () => {
  emits('add', 10) // 第一个参数为自定义事件名  第二个参数为要传递的数据
}
const decrease = () => {
  emits('decrease', 3) // 第一个参数为自定义事件名  第二个参数为要传递的数据
}

 
</script>

2、定义父组件

vue 复制代码
// 父组件 parent.vue
 
<template>
  <child @clickFn="updateInfo" />
  <button @click="handelClick">传递给父级</button>
  <button @click="handelAdd">加</button>
  <button @click="handelDecrease">减</button>
</template>
 
<script setup lang="ts">
import child from './child.vue'
import { ref } from 'vue'
const num = ref(10)

const updateInfo = (userInfo) => {
  console.log(userInfo) // { name: '张三', age: 18,id: 1 }
}
const handelAdd = (n) => {
  num.value += n
}
const handelDecrease = (n) => {
  num.value -= n
}
 
</script>
相关推荐
sen_shan1 分钟前
Vue3+Vite+TypeScript+Element Plus开发-10.多用户动态加载菜单
vue.js·typescript·vue3·element·element plus·动态菜单·多用户动态加载菜单
华科云商xiao徐3 分钟前
多语言编写的图片爬虫教程
前端
日升_rs6 分钟前
Electron 开发:获取当前客户端 IP
前端·javascript
华科云商xiao徐12 分钟前
Python使用爬虫IP抓取数据过程
前端
前端大卫13 分钟前
你所不知道的 9个CSS 小知识!
前端·css
代码小学僧19 分钟前
🌟好看又好用的画图工具分享
前端·开源·设计
cong_22 分钟前
🌟摸鱼 TV 搭建属于自己的视频站
前端·后端·github
kovli27 分钟前
红宝书第六讲:作用域链与闭包:厨房里的调味料架原理
前端·javascript
Mike_jia28 分钟前
一篇文章带你了解一款强大的Kubernetes管理平台---KubeSphere
前端
Mike_jia29 分钟前
一篇文章带你了解一款强大的开源交互审计系统---Next Terminal
前端