詳解Vue3子組件向父組件傳遞消息
父子組件之間的通信:props與emit
通常提到props,都會(huì)想到的是父組件給子組件傳值;提到emit為子組件向父組件發(fā)送消息,但其實(shí),props也可以使子組件向父組件傳遞消息
方式為在父組件中通過為子組件綁定屬性,子組件接收;但其實(shí),我們只需要父組件向子組件傳遞一個(gè)事件,使子組件調(diào)用該事件來(lái)獲取子組件的消息
常規(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組價(jià)的事件,A調(diào)用后我可以接收到: <span style="color:darkorange">{{state.childMsg}}</span> </p> <h1>我是父組件B,下面是我的子組件A</h1> <A msg="我是土豆我是土豆,收到請(qǐng)回答" :myFn="state.fn" ></A> </div> </template> <script setup> import { reactive } from "vue"; import A from "../components/A.vue" const state = reactive({ childMsg: '暫無(wú)消息', fn: (data) => { state.childMsg = data } }) </script>
當(dāng)子組件A點(diǎn)擊“向B發(fā)送消息” 調(diào)用了這個(gè)myFn的函數(shù),并且傳遞參數(shù),父組件B中就可以收到A傳遞的參數(shù),此時(shí)就完成了子組件行父組件傳遞消息
與emit的區(qū)別:定義和調(diào)用的不同
props方式:父組件為子組件綁定一個(gè)屬性,將函數(shù)賦值給該屬性,子組件通過props接收,調(diào)用此事件,傳遞消息。emit方式:父組件需要在子組件標(biāo)簽中注冊(cè)一個(gè)事件,子組件通過emit調(diào)用此事件,傳遞消息。
到此這篇關(guān)于詳解Vue3子組件向父組件傳遞消息的文章就介紹到這了,更多相關(guān)Vue3子組件向父組件傳遞消息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue實(shí)現(xiàn)滑動(dòng)驗(yàn)證條
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)滑動(dòng)驗(yàn)證條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03解決vue打包后刷新頁(yè)面報(bào)錯(cuò):Unexpected token <
這篇文章主要介紹了解決vue打包后刷新頁(yè)面報(bào)錯(cuò):Unexpected token <相關(guān)知識(shí)點(diǎn),需要的朋友們參考下。2019-08-08vue.js開發(fā)實(shí)現(xiàn)全局調(diào)用的MessageBox組件實(shí)例代碼
最近學(xué)習(xí)了Vue.js,感覺組件這個(gè)地方知識(shí)點(diǎn)挺多的,而且很重要,所以決定記錄下,下面這篇文章主要給大家介紹了關(guān)于利用vue.js開發(fā)實(shí)現(xiàn)全局調(diào)用的MessageBox組件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-11-11Vue中使用?Aplayer?和?Metingjs?添加音樂插件的方式
這篇文章主要介紹了Vue中使用?Aplayer?和?Metingjs?添加音樂插件,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08vue.js動(dòng)態(tài)修改background-image問題
這篇文章主要介紹了vue.js動(dòng)態(tài)修改background-image問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08解決Vue運(yùn)算符報(bào)錯(cuò):Syntax Error: Unexpected token問題
這篇文章主要介紹了解決Vue運(yùn)算符報(bào)錯(cuò):Syntax Error: Unexpected token問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01Vue中@click.native的使用方法及場(chǎng)景
在組件中時(shí)??吹紷click.native,在項(xiàng)目中遇到后,簡(jiǎn)單介紹下,這篇文章主要給大家介紹了關(guān)于Vue中@click.native的使用方法及場(chǎng)景的相關(guān)資料,需要的朋友可以參考下2023-11-11