Home >> Blog >> 什麼是 Vue Emit? Vue 元件 emit 簡介

什麼是 Vue Emit? Vue 元件 emit 簡介

介紹

雖然強烈建議您記錄每個組件發出的所有事件。Vue $emit 是一個函數,它允許我們從子組件向其父組件發出或發送自定義事件。因為它用於通知父組件發生了變化,它不僅方便了子組件和父組件之間的通信,也方便了分離的兄弟組件之間的通信,並且是觸發某些事件的最佳方式。

目標

Vue $emit 可以在您的程式碼中以多種方式使用。但在本文中,我將解釋 Vue Emit 是什麼,我們將探討如何使用 vue $emit() 函數來處理自定義發出的事件,並提供程式碼範例。

先決條件

本文假設您對 Vue JS 有基本的了解。但是您不需要任何處理自定義發出事件的經驗,因為本教程將深入解釋 Vue $emit 函數是什麼以及如何處理自定義發出的事件。

本文將涵蓋以下內容:

  • Vue Js 簡介
  • 安裝和設置
  • 什麼是 Vue $Emit?
  • Vue $Emit 是如何工作的?
  • 使用 vue $emit 函數處理自定義事件
  • 結論

Vue Js 簡介

Vue 是一個用 JavaScript 編寫的用戶界面框架。它的基本元素主要與視圖層有關,理解起來相當簡單。

安裝和設置

以下方法介紹瞭如何設置項目或安裝 Vue js。因為我們不會在我們的應用程序中使用任何庫,讓我們繼續安裝 Vue Js。

現在,使用以下命令創建新的 Vue 項目:

vue create vue-custom-event

之後,導航到終端中的項目並啟動 Vue 開發伺服器,如下所示:

Npm run serve

這將在以下端口啟動我們的 Vue 項目的開發伺服器:

http://localhost:8080/

這是我們應用程序的輸出

什麼是 Vue Emit?

什麼是 Vue Emit?

Vue $emit 是一個函數,它允許我們從子組件向其父組件發出或發送自定義事件。在標準的 Vue 流程中,這是觸發某些事件的最佳方式。

Vue Emit 是如何工作的?

$emit 函數,換句話說,允許我們將函數作為道具發送。讓我們先來看看如何在 Vue.js 中創建自定義事件,然後看看如何監聽它。在 Vue.js 中,以下是觸發事件的語法:

this.$emit('eventName')

使用此語法為事件命名時必須小心,因為稍後我們將使用相同的名稱監聽事件。我們可以像在 Vue.js 中監聽點擊事件一樣監聽這個事件。舉個例子

< BlogContent @displayData="fetchData"/>

我們可以用引號和函數編寫任何表達式。因此,為了更好地掌握它,讓我們看一個基本範例。

使用 Vue $Emit 函數處理自定義事件

例子

在這個例子中,我們將構建一個基本的博客文章來解釋這部分。

假設我們有一個名為 BlogPage 的父組件,它有一個名為BlogContent的子組件,我們通過 props 將博客標題和內容傳遞給它。

< template>
< section id="BlogPage">
< BlogContent
title="Introduction to CSS"
content="CSS is a stylesheet language used to style the structure of our document"
/>
< /section>
< /template>

< script>
import BlogContent from './components/BlogContent.vue'

export default {
name: 'BlogPage',
components: {
BlogContent
}
}

在子組件BlogContent組件中,我們使用 props 在 h1 和 p 標籤中顯示我們博客的標題和內容。

< template>
< section id="BlogPage">
< h1 class="title-text">{{ title }}< /h1>
< p class="content-text">{{ content }}< /p>
< /section>
< /template>
// JS File
< script>
export default {
name: "BlogContent",
props: ["title", "content"],
};

< /script>

設置完這兩個組件後,就可以開始了。讓我們添加一個按鈕來顯示更多內容。為此,我們將首先創建一個按鈕,然後調用displayContent方法,這將向我們展示您有興趣閱讀的更多主題。創建按鈕後,BlogContent的 HTML將如下所示:

< template>
< section id="BlogPage">
< h1 class="title-text">{{ title }}< /h1>
< p class="content-text">{{ content }}< /p>
< button v- on: click="displayContent" class="text-link"> See More < /button>
< /section>
< /template>

此後,在我們的方法對象displayContent中,我們構建了一個函數,該函數將顯示更多讀者希望看到的內容,我們將事件命名為displayData並為其提供我們希望它在博客中顯示的數據。這就是在 Vue Js 中觸發事件的全部內容。

< script>
export default {
name: "BlogContent",
props: ["title", "content"],
data() {},
methods : {
display Content() {
this. $ emit (" displayData ", this.title );
},
},
};
< /script>

在前面的程式碼範例中,我們看到瞭如何觸發事件,但還缺少一件事:我們需要監聽事件。在這個例子中,我們將創建一個函數fetchData來返回數據的結果。接下來,我們將給定的字符串分配給結果變量。

< script>
import BlogContent from "../components/BlogContent.vue";
export default {
name: "BlogPage",
components: {
BlogContent,
},
data: () => ({
result: "",
}),
methods: {
fetchData(data) {
this.result = data;
},
},
};
< /script>
< template>
< section id="BlogPage">
< h1 class="heading-text">Welcome to my Blog< /h1>
< div class="parent-container">
< div class="Card-body">
< BlogContent
title="Introduction to CSS"
content="CSS is a stylesheet language used to style the structure of our document"
@displayData="fetchData($event)"
/>
< /div>
< div class="Card-body">
title="What is $Emit in Vue Js"
content="Vue $emit is a function that lets us emit, or send, custom events "
@displayData="fetchData($event)"
/>
< /div>
< div class="Card-body">
< BlogContent
title="Understanding Currying"
content="Currying simply means evaluating functions with multiple arguments"
@displayData="fetchData($event)"
/>
< /div>

< /div>
< h4 class="result-text">Result: {{ result }}< /h4>
< /section>
< /template>

接下來,我們將在模板中的BlogContent某處綁定結果變量以查看我們的數據。

Result: {{ result }}

現在,讓我們看看我們的應用程序在瀏覽器上的樣子

component

props

props

this

event

events

emit

emit

emit

emit

emit

emit

emit

emit

emit

emit

emit

emit

emit

emit

emit

emit

emit

emit

emit

emit

component

component

component

component

component

this

this

this

this

this

input

input