詳解Vue3子組件向父組件傳遞消息
父子組件之間的通信:props與emit
通常提到props,都會想到的是父組件給子組件傳值;提到emit為子組件向父組件發(fā)送消息,但其實,props也可以使子組件向父組件傳遞消息
方式為在父組件中通過為子組件綁定屬性,子組件接收;但其實,我們只需要父組件向子組件傳遞一個事件,使子組件調(diào)用該事件來獲取子組件的消息
常規(guī)使用
<!-- 子組件A -->
<template>
<div style="color:coral">
我是B的子組件A
</div>
</template>
<script setup>
import { onMounted } from "vue";
const props = defineProps({
msg: String
})
onMounted(() => {
console.log('我是A,我接收到B給我傳遞的消息', props);
})
</script><!-- 父組件B -->
<template>
<div>
<h1>我是父組件B,下面是我的子組件A</h1>
<A msg="我是父組件B,我現(xiàn)在向A組件傳遞消息"></A>
</div>
</template>
<script setup>
import A from "../components/A.vue"
</script>
子組件向父組件傳遞消息
<!-- 子組件A -->
<template>
<div style="background:gainsboro">
<h3 style="color:coral">我是B的子組件A</h3>
<button @click="send">向B發(fā)消息</button>
</div>
</template>
<script setup>
import { onMounted } from "vue";
const props = defineProps({
msg: String,
myFn: Function
})
onMounted(() => {
console.log('我是紅薯我是紅薯,收到收到', props);
})
const send = () => {
props.myFn('我是A,我調(diào)用B的事件向它發(fā)送此消息:嘿~土豆')
}
</script><!-- 父組件B -->
<template>
<div>
<p>我是父組件B,我傳遞給A組價的事件,A調(diào)用后我可以接收到:
<span style="color:darkorange">{{state.childMsg}}</span>
</p>
<h1>我是父組件B,下面是我的子組件A</h1>
<A
msg="我是土豆我是土豆,收到請回答"
:myFn="state.fn"
></A>
</div>
</template>
<script setup>
import { reactive } from "vue";
import A from "../components/A.vue"
const state = reactive({
childMsg: '暫無消息',
fn: (data) => {
state.childMsg = data
}
})
</script>
當(dāng)子組件A點(diǎn)擊“向B發(fā)送消息” 調(diào)用了這個myFn的函數(shù),并且傳遞參數(shù),父組件B中就可以收到A傳遞的參數(shù),此時就完成了子組件行父組件傳遞消息

與emit的區(qū)別:定義和調(diào)用的不同
props方式:父組件為子組件綁定一個屬性,將函數(shù)賦值給該屬性,子組件通過props接收,調(diào)用此事件,傳遞消息。emit方式:父組件需要在子組件標(biāo)簽中注冊一個事件,子組件通過emit調(diào)用此事件,傳遞消息。


到此這篇關(guān)于詳解Vue3子組件向父組件傳遞消息的文章就介紹到這了,更多相關(guān)Vue3子組件向父組件傳遞消息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue2更改data里的變量不生效時,深層更改data里的變量問題
這篇文章主要介紹了vue2更改data里的變量不生效時,深層更改data里的變量問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
Vue 頁面狀態(tài)保持頁面間數(shù)據(jù)傳輸?shù)囊环N方法(推薦)
vue router給我們提供了兩種頁面間傳遞參數(shù)的方式,一種是動態(tài)路由匹配,一種是編程式導(dǎo)航,接下來通過本文給大家介紹Vue 頁面狀態(tài)保持頁面間數(shù)據(jù)傳輸?shù)囊环N方法,需要的朋友可以參考下2018-11-11
Vue?warn:Property?"state"?was?accessed?during
這篇文章主要為大家介紹了Vue?warn:Property?"state"?was?accessed?during?render的報錯解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06

