vue3组件通信之defineEmits的用法详解
作者:一千零一金
defineEmits是Vue3中的一个方法,用于子组件与父组件之间的通信,允许子组件触发自定义事件,这个方法不需要引入,可以直接使用,在使用中,父组件和子组件通过defineEmits触发和监听事件,以实现数据和状态的传递
一、defineEmits是什么?
defineEmits 是vue3提供的方法,又称为自定义事件,不需要引入可以直接使用,用于子组件与父组件通信。
二、使用样例
1.父组件代码
代码如下(示例):
<template> <div> <h1>事件</h1> <!-- vue3:原生的DOM事件不管是放在标签身上、组件标签身上都是原生DOM事件--> <!-- 绑定自定义事件xxx:实现子组件给父组件传递数据 --> <Event2 @xxx="handler3" @click="handler4"></Event2> </div> </template> <script setup lang="ts"> //引入子组件 import Event2 from './Event2.vue'; const handler3 = (param1: any,param2: any)=>{ console.log(param1,param2); } //事件回调--5 const handler4 = (param1: any,param2: any)=>{ console.log(param1,param2); } </script> <style scoped> </style>
2.子组件代码
代码如下(示例):
<template> <div class="child"> <p>我是子组件2</p> <button @click="handler">点击我触发自定义事件xxx</button> <button @click="$emit('click','AK47','J20')">点击我触发自定义事件click</button> </div> </template> <script setup lang="ts"> //利用defineEmits方法返回函数触发自定义事件 //defineEmits方法不需要引入直接使用 let $emit = defineEmits(['xxx','click']); //按钮点击回调 const handler = () => { //第一个参数:事件类型 第二个|三个|N参数即为注入数据 $emit('xxx','东风导弹','航母'); }; </script> <style scoped> .child { width: 400px; height: 200px; background: pink; } </style>
总结
vue3:原生的DOM事件不管是放在标签身上、组件标签身上都是原生DOM事件,利用defineEmits方法返回函数触发自定义事件,defineEmits方法不需要引入直接使用。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。