父子組件資料傳遞 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
    3會員
    17內容數
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    郭欣玫的沙龍 的其他內容
    CSS Box Model 是在 CSS 裡面,html 的每個元素都可被視作為一個盒子,然後可以針對這個盒子去做調整,看以下圖片: 簡單來說margin就是一個是外邊距,與外層元素的間距 Margin 用於控制元素與其周邊元素的間隔,可以設定為正數(增加與其他元素的距離)、負數(減少與其他
    今天來介紹一下比較常用的4種定位方式 其中讓我最搞混的是relative跟absolute position: relative 還未定top, bottom, left, right 的屬性時,預設會套用position:static,但如果你去設定了top, bottom, left, ri
    CSS Box Model 是在 CSS 裡面,html 的每個元素都可被視作為一個盒子,然後可以針對這個盒子去做調整,看以下圖片: 簡單來說margin就是一個是外邊距,與外層元素的間距 Margin 用於控制元素與其周邊元素的間隔,可以設定為正數(增加與其他元素的距離)、負數(減少與其他
    今天來介紹一下比較常用的4種定位方式 其中讓我最搞混的是relative跟absolute position: relative 還未定top, bottom, left, right 的屬性時,預設會套用position:static,但如果你去設定了top, bottom, left, ri
    你可能也想看
    Google News 追蹤
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
    Thumbnail
    江翔州第一次和爸爸上台演講,這對於他來說是一次初試啼聲,但卻是一個意義非凡的時刻。 在15分鐘的演講中,他與大家分享了他和爸爸一同騎腳踏車到西班牙和葡萄牙六條朝聖之路的經歷,這趟旅程跨越了兩個月,總計4000公里,對他來說是一段心靈和身體的雙重成長之旅。 首先,翔州在旅程中看到了爸爸由傳
    Thumbnail
    在這篇文章中,一位46歲的父親和他3歲的兒子在浴室裡發生了情緒上的對峙。這篇文章描述了父親在疲憊不堪的情況下,試圖維持冷靜,並最終與兒子一起釋放了情緒。雖然文章內容充滿了父子之間的情感交流,但也有著幽默與溫情的一面。
    Thumbnail
    告別從來都不是一件容易的事,在明知沒有機會再次見面的情況下,看著所愛之人雙眼闔上,接著經歷各種情緒上的波動到逐漸緩和,歷經和克服這樣的過程是多麼艱難的一件事情。 而當父親坂本龍一被診斷出癌症末期時,他的兒子空音央用兩人對音樂和電影的共同愛好,讓他可以與這個世界劃下完美告別。
    Thumbnail
    「爸,我想出國讀書,您把房子賣了吧!」       「好的兒子。賣好了,錢拿去。」   ……      「爸,我想創業,您把退休金給我吧!」      「好的兒子。領出來了,你拿去。」      ……      「爸,我決定成家,您幫我攢的老婆本
    Thumbnail
    父親和兒子在壽山動物園度過愉快時光,一同品味美食、騎U-Bike、欣賞美景、觀賞燈光展演,共同創造難忘回憶。
    在台灣有個奇特現象,越接近選舉就會民調滿天飛,然後媒體及政客拿來作文章,但往往民調跟最後開出來的選票很多時候是大相逕庭的,其實拆解所謂民調其實就那回事,目的上拉高自己聲勢壓低對手聲勢,最好能讓對手陷入如父子騎驢寓言故事般的左右支拙,因為民調看似科學實際上人為操作的痕跡相當難隱藏,從抽樣區域,範圍,年
    Thumbnail
    34.父子 音樂: 《First Love 初戀》宇多田光うただヒカル 大提琴版本 Cello cover 『cover by YoYo Cello』【經典歌曲系列】First Love 初戀主題曲 所有人對陀羅的身材比例都感到驚嘆不已,他的身材線條完美,從領口、衣長、袖口、臂寬、肩膀、後頸到腰
    這則《論語》很受當代人、特別是大陸的學者所批評,他們認為父子互相為對方的過失而隱瞞,那不是包庇、徇私嗎?因而批評孔子不講法治精神。
    Thumbnail
    某天,資源回收倉滿了,行政總務聯繫了資源回收商來清運。 廠商到廠後,我一看是兩個人,一個操作夾子車,一個在下面開堆高機。 處理完資源回收後,我詢問較年長的男生,稱讚開堆高機的年輕男生很優秀,很熟練的開堆高機。 這位年長的大叔跟我說,那是他兒子。 這是總務跟我點點頭,表示認同。
    星期六傍晚,媽媽帶珣去檢查眼睛,順便回阿嬤家,弟弟不肯跟,除了擔心影響看神奇寶貝,他也不喜歡到阿嬤家。 奶奶出去唸佛,爺爺煮他的第一千零一種拿手麵給我們吃。飯後,爸爸邀弟弟去公園散步,他先是答應,但臨出大門,卻又反悔,想來是少了玩伴沒意思,家庭裡如果只有一個孩子,真是十分寂寞的。 爸爸散步回來,在客
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
    Thumbnail
    江翔州第一次和爸爸上台演講,這對於他來說是一次初試啼聲,但卻是一個意義非凡的時刻。 在15分鐘的演講中,他與大家分享了他和爸爸一同騎腳踏車到西班牙和葡萄牙六條朝聖之路的經歷,這趟旅程跨越了兩個月,總計4000公里,對他來說是一段心靈和身體的雙重成長之旅。 首先,翔州在旅程中看到了爸爸由傳
    Thumbnail
    在這篇文章中,一位46歲的父親和他3歲的兒子在浴室裡發生了情緒上的對峙。這篇文章描述了父親在疲憊不堪的情況下,試圖維持冷靜,並最終與兒子一起釋放了情緒。雖然文章內容充滿了父子之間的情感交流,但也有著幽默與溫情的一面。
    Thumbnail
    告別從來都不是一件容易的事,在明知沒有機會再次見面的情況下,看著所愛之人雙眼闔上,接著經歷各種情緒上的波動到逐漸緩和,歷經和克服這樣的過程是多麼艱難的一件事情。 而當父親坂本龍一被診斷出癌症末期時,他的兒子空音央用兩人對音樂和電影的共同愛好,讓他可以與這個世界劃下完美告別。
    Thumbnail
    「爸,我想出國讀書,您把房子賣了吧!」       「好的兒子。賣好了,錢拿去。」   ……      「爸,我想創業,您把退休金給我吧!」      「好的兒子。領出來了,你拿去。」      ……      「爸,我決定成家,您幫我攢的老婆本
    Thumbnail
    父親和兒子在壽山動物園度過愉快時光,一同品味美食、騎U-Bike、欣賞美景、觀賞燈光展演,共同創造難忘回憶。
    在台灣有個奇特現象,越接近選舉就會民調滿天飛,然後媒體及政客拿來作文章,但往往民調跟最後開出來的選票很多時候是大相逕庭的,其實拆解所謂民調其實就那回事,目的上拉高自己聲勢壓低對手聲勢,最好能讓對手陷入如父子騎驢寓言故事般的左右支拙,因為民調看似科學實際上人為操作的痕跡相當難隱藏,從抽樣區域,範圍,年
    Thumbnail
    34.父子 音樂: 《First Love 初戀》宇多田光うただヒカル 大提琴版本 Cello cover 『cover by YoYo Cello』【經典歌曲系列】First Love 初戀主題曲 所有人對陀羅的身材比例都感到驚嘆不已,他的身材線條完美,從領口、衣長、袖口、臂寬、肩膀、後頸到腰
    這則《論語》很受當代人、特別是大陸的學者所批評,他們認為父子互相為對方的過失而隱瞞,那不是包庇、徇私嗎?因而批評孔子不講法治精神。
    Thumbnail
    某天,資源回收倉滿了,行政總務聯繫了資源回收商來清運。 廠商到廠後,我一看是兩個人,一個操作夾子車,一個在下面開堆高機。 處理完資源回收後,我詢問較年長的男生,稱讚開堆高機的年輕男生很優秀,很熟練的開堆高機。 這位年長的大叔跟我說,那是他兒子。 這是總務跟我點點頭,表示認同。
    星期六傍晚,媽媽帶珣去檢查眼睛,順便回阿嬤家,弟弟不肯跟,除了擔心影響看神奇寶貝,他也不喜歡到阿嬤家。 奶奶出去唸佛,爺爺煮他的第一千零一種拿手麵給我們吃。飯後,爸爸邀弟弟去公園散步,他先是答應,但臨出大門,卻又反悔,想來是少了玩伴沒意思,家庭裡如果只有一個孩子,真是十分寂寞的。 爸爸散步回來,在客