36
Vue 3 學習之旅
元件系統

子元件事件:emit 基礎

·6 分鐘閱讀·元件系統

摘要

emit 是子元件向父元件發送事件的機制。透過 emit,子元件可以通知父元件某些事情發生了,並可以攜帶資料。這是 Vue 中實現「子傳父」通訊的標準方式。

定義與說明

emit 的作用:

emit 允許子元件觸發自訂事件,父元件可以監聽這些事件並作出回應。這是一種向上通知的機制,常用於:

  • • 通知父元件狀態改變
  • • 傳遞表單提交的資料
  • • 請求父元件執行某些操作

使用方式:

<script setup> 中使用 defineEmits 定義事件,然後在需要的時候調用 emit 函數觸發事件。父元件使用 v-on@ 語法監聽這些事件。

實作範例

ChildComponent.vue (子元件)
<script setup>
// 定義可以發送的事件
const emit = defineEmits(['update', 'delete']);

function handleUpdate() {
  // 發送 update 事件,並傳遞資料
  emit('update', { status: 'completed' });
}

function handleDelete() {
  // 發送 delete 事件
  emit('delete');
}
</script>

<template>
  <div class="actions">
    <button @click="handleUpdate">更新狀態</button>
    <button @click="handleDelete">刪除</button>
  </div>
</template>
ParentComponent.vue (父元件)
<script setup>
function onUpdate(data) {
  console.log('狀態更新:', data.status);
}

function onDelete() {
  console.log('刪除請求');
}
</script>

<template>
  <ChildComponent
    @update="onUpdate"
    @delete="onDelete"
  />
</template>

結論

emit 機制與 props 相輔相成,共同構成了 Vue 元件間的雙向通訊系統。props 負責向下傳遞資料,emit 負責向上傳遞事件。這種清晰的資料流向有助於維護程式碼的可預測性和可維護性。

emit 子傳父 事件機制