詳解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>
當子組件A點擊“向B發(fā)送消息” 調(diào)用了這個myFn的函數(shù),并且傳遞參數(shù),父組件B中就可以收到A傳遞的參數(shù),此時就完成了子組件行父組件傳遞消息
與emit的區(qū)別:定義和調(diào)用的不同
props方式:父組件為子組件綁定一個屬性,將函數(shù)賦值給該屬性,子組件通過props接收,調(diào)用此事件,傳遞消息。emit方式:父組件需要在子組件標簽中注冊一個事件,子組件通過emit調(diào)用此事件,傳遞消息。
到此這篇關(guān)于詳解Vue3子組件向父組件傳遞消息的文章就介紹到這了,更多相關(guān)Vue3子組件向父組件傳遞消息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決vue打包后刷新頁面報錯:Unexpected token <
這篇文章主要介紹了解決vue打包后刷新頁面報錯:Unexpected token <相關(guān)知識點,需要的朋友們參考下。2019-08-08vue.js開發(fā)實現(xiàn)全局調(diào)用的MessageBox組件實例代碼
最近學習了Vue.js,感覺組件這個地方知識點挺多的,而且很重要,所以決定記錄下,下面這篇文章主要給大家介紹了關(guān)于利用vue.js開發(fā)實現(xiàn)全局調(diào)用的MessageBox組件的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。2017-11-11Vue中使用?Aplayer?和?Metingjs?添加音樂插件的方式
這篇文章主要介紹了Vue中使用?Aplayer?和?Metingjs?添加音樂插件,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08vue.js動態(tài)修改background-image問題
這篇文章主要介紹了vue.js動態(tài)修改background-image問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08解決Vue運算符報錯:Syntax Error: Unexpected token問題
這篇文章主要介紹了解決Vue運算符報錯:Syntax Error: Unexpected token問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01