vue3組件通信之defineEmits的用法詳解
更新時間:2025年10月11日 14:16:48 作者:一千零一金
defineEmits是Vue3中的一個方法,用于子組件與父組件之間的通信,允許子組件觸發(fā)自定義事件,這個方法不需要引入,可以直接使用,在使用中,父組件和子組件通過defineEmits觸發(fā)和監(jiān)聽事件,以實現(xiàn)數(shù)據(jù)和狀態(tài)的傳遞
一、defineEmits是什么?
defineEmits 是vue3提供的方法,又稱為自定義事件,不需要引入可以直接使用,用于子組件與父組件通信。
二、使用樣例
1.父組件代碼
代碼如下(示例):
<template>
<div>
<h1>事件</h1>
<!-- vue3:原生的DOM事件不管是放在標簽身上、組件標簽身上都是原生DOM事件-->
<!-- 綁定自定義事件xxx:實現(xiàn)子組件給父組件傳遞數(shù)據(jù) -->
<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);
}
//事件回調(diào)--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">點擊我觸發(fā)自定義事件xxx</button>
<button @click="$emit('click','AK47','J20')">點擊我觸發(fā)自定義事件click</button>
</div>
</template>
<script setup lang="ts">
//利用defineEmits方法返回函數(shù)觸發(fā)自定義事件
//defineEmits方法不需要引入直接使用
let $emit = defineEmits(['xxx','click']);
//按鈕點擊回調(diào)
const handler = () => {
//第一個參數(shù):事件類型 第二個|三個|N參數(shù)即為注入數(shù)據(jù)
$emit('xxx','東風導彈','航母');
};
</script>
<style scoped>
.child {
width: 400px;
height: 200px;
background: pink;
}
</style>
總結(jié)
vue3:原生的DOM事件不管是放在標簽身上、組件標簽身上都是原生DOM事件,利用defineEmits方法返回函數(shù)觸發(fā)自定義事件,defineEmits方法不需要引入直接使用。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue3+Element-Plus使用Table預覽圖片發(fā)生元素遮擋的解決方法
這篇文章主要介紹了Vue3+Element-Plus使用Table預覽圖片發(fā)生元素遮擋的問題分析和解決方法,文中通過代碼示例講解的非常詳細,對大家解決問題有一定的幫助,需要的朋友可以參考下2024-04-04
vue在mounted拿不到props中傳遞的數(shù)據(jù)問題
這篇文章主要介紹了vue在mounted拿不到props中傳遞的數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03

