父子組件資料傳遞 props、emit

更新於 發佈於 閱讀時間約 5 分鐘

當 父組件 有數據想傳送到 子組件 就可以使用props

1​. 父層傳遞設置

可以在父組件的屬性給予一個值,當作要傳送到子組件的資料。

<!-- App.vue (父組件) -->
<template>
<div>
<ChildComponent greeting="Hello" name="MAY" />
</div>
</template>

<script setup>
import ChildComponent from './ChildComponent.vue';
</script>

在 屬性上的props名稱命名規則,須使用kebab-case(烤肉串),不可以使用camelCase(駱峰)。

2.子層接收數據

子組件可以宣告props來接收來自父組件的數據,指定數據名稱必須要使用 camelCase (駱峰)來設置接收。

可以通過在子組件中使用 defineProps 來接收父組件傳遞的 props。

<!-- ChildComponent.vue (子組件) -->
<template>
<div>
<p>{{ greeting }}, {{ name }}!</p>
</div>
</template>

<script setup>
import { defineProps } from 'vue';

const props = defineProps({
greeting: String,
name: String
});
</script>

它被包含在父組件 App.vue 中。它接收來自父組件的 greetingname 兩個 props,並在模板中使用它們。


那如果今天當你需要在子組件中觸發一個事件並將數據傳遞給父組件時,你可以使用 emit

<!-- ChildComponent.vue (子組件) -->
<template>
<button @click="handleClick">Click me!</button>
</template>

<script setup>
import { defineEmits } from 'vue';

const emits = defineEmits(['button-click']);

const handleClick = () => { emits('button-click', 'Some data from child'); }

</script>

在子組件中有點擊事件會觸發 handleClick 方法。在這個方法中,我們使用 emits 來觸發一個名為 button-click 的事件,同時將一些數據 'Some data from child' 作為參數傳遞。

<!-- App.vue (父組件) -->
<template>
<div>
<ChildComponent @button-click="handleButtonClick" />
<p>{{ message }}</p>
</div>
</template>

<script setup>
import ChildComponent from './ChildComponent.vue';
import { ref } from 'vue';

const message = ref('');

const handleButtonClick = (data) => { message.value = data; }

</script>

在父組件 App.vue 中,我們使用 ChildComponent 並監聽子組件觸發的 button-click 事件。當事件被觸發時,handleButtonClick 方法會被調用並接收從子組件傳遞過來的數據。在這個例子中,我們將這個數據賦值給 message 變量,並在模板中渲染出來。這樣子組件就可以通過 emit 將數據傳遞給父組件。

參考資料 :

父子組件資料傳遞 props、$emit | Docs99 (docs-99.vercel.app)


留言
avatar-img
留言分享你的想法!
avatar-img
郭欣玫的沙龍
3會員
17內容數
郭欣玫的沙龍的其他內容
2024/07/24
主要來講宣告函式跟箭頭函式 : 宣告函式(Function Declaration) 語法: function functionName(parameters) { return result; } 特點: 使用 function 關鍵字 函式名稱是必需的 存在函式
2024/07/24
主要來講宣告函式跟箭頭函式 : 宣告函式(Function Declaration) 語法: function functionName(parameters) { return result; } 特點: 使用 function 關鍵字 函式名稱是必需的 存在函式
2024/07/14
就是指變數可以被訪問和使用的範圍,來說一下var、let和const的作用域差異。 var :function example() { console.log(x); // 輸出: undefined 因為變量提升造成的 var x = 5; } 函數作用域或全域作用域 可以重複宣告
2024/07/14
就是指變數可以被訪問和使用的範圍,來說一下var、let和const的作用域差異。 var :function example() { console.log(x); // 輸出: undefined 因為變量提升造成的 var x = 5; } 函數作用域或全域作用域 可以重複宣告
2024/07/04
一開始你先把你的專案push上去後,修改vite.config.ts ,要在裡面新增  base: "/Cart/" (/放自己的專案名稱/) build: {outDir: "docs"}, 接下來你要去你的github setting 裡面 -> Page ->選Deploy fro
Thumbnail
2024/07/04
一開始你先把你的專案push上去後,修改vite.config.ts ,要在裡面新增  base: "/Cart/" (/放自己的專案名稱/) build: {outDir: "docs"}, 接下來你要去你的github setting 裡面 -> Page ->選Deploy fro
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
各位使用 Vue.js 開發的小夥伴們,你們都怎麼實作父子層組件資料的雙向綁定呢?如果你還在寫 prop + emit 的話,不妨進來看看吧。
Thumbnail
各位使用 Vue.js 開發的小夥伴們,你們都怎麼實作父子層組件資料的雙向綁定呢?如果你還在寫 prop + emit 的話,不妨進來看看吧。
Thumbnail
平常我們在 html 上常看到的例如 v-for、v-model 等等... 也是VUE已經幫我們定義好的指令,而這次我們可以依這自己的需求來建立。 此功能屬於較進階的功能,因此實戰中會比較少見,市面上還是有不少完善的套件能達到同樣效果,建議可以先往這方面察找
Thumbnail
平常我們在 html 上常看到的例如 v-for、v-model 等等... 也是VUE已經幫我們定義好的指令,而這次我們可以依這自己的需求來建立。 此功能屬於較進階的功能,因此實戰中會比較少見,市面上還是有不少完善的套件能達到同樣效果,建議可以先往這方面察找
Thumbnail
我們在實作中,難免會遇到在不同組件中,卻有需求相同的資料格式,因此 mixins 可以達到我們的需求,除了 data 以外也包含了 methods 可以共用,舉例來說,學生資料可能會在,班級跟社團內被使用,當我們要撰寫元件時,就可以省略多餘的 data 定義。
Thumbnail
我們在實作中,難免會遇到在不同組件中,卻有需求相同的資料格式,因此 mixins 可以達到我們的需求,除了 data 以外也包含了 methods 可以共用,舉例來說,學生資料可能會在,班級跟社團內被使用,當我們要撰寫元件時,就可以省略多餘的 data 定義。
Thumbnail
VUE為單向資料流的框架,在鄰近層級之間我們可以依靠 props 由父層向子層來傳遞需要的資料,然而遇到跨層級的架構時,雖然也是可以一層層傳進去,只是這會造成多餘的處理及凌亂的程式碼,因此才有了 "provide" 來解決我們跨層級的需求。 層級展示圖
Thumbnail
VUE為單向資料流的框架,在鄰近層級之間我們可以依靠 props 由父層向子層來傳遞需要的資料,然而遇到跨層級的架構時,雖然也是可以一層層傳進去,只是這會造成多餘的處理及凌亂的程式碼,因此才有了 "provide" 來解決我們跨層級的需求。 層級展示圖
Thumbnail
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
Thumbnail
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
Thumbnail
2023 Vue直播班筆記 - 動態路由Props,接續之前的一般動態路由。分為 "寫死" 及 "彈性" 兩種。
Thumbnail
2023 Vue直播班筆記 - 動態路由Props,接續之前的一般動態路由。分為 "寫死" 及 "彈性" 兩種。
Thumbnail
這系列是我在 2023 六角學院 Vue作品實戰班的筆記,筆記以本人理解的方式記錄。此篇主題為 Slot Props 進階應用 ,其中包含單筆資料、多筆資料。
Thumbnail
這系列是我在 2023 六角學院 Vue作品實戰班的筆記,筆記以本人理解的方式記錄。此篇主題為 Slot Props 進階應用 ,其中包含單筆資料、多筆資料。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News