Vue中父組件向子組件傳遞數(shù)據(jù)的幾種方法
最近在學(xué)習(xí)vue的源碼,總結(jié)了幾種vue中父子組件傳遞數(shù)據(jù)的方法。
1.props & event
父組件向子組件傳遞props數(shù)據(jù),子組件通過觸發(fā)事件向父組件回傳數(shù)據(jù),代碼如下:
//子組件 <template> <div @click="changeName('YYY')">{{name}}</div> </template> <script> export default{ props:['name'],//or props:{name:{type:String,default:''}} methods:{ //不能在子組件修改props數(shù)據(jù),應(yīng)觸發(fā)事件讓父組件處理 changeName(newName){ this.$emit('changeName',newName) } } } </script> //父組件 <template> <div> <child-comp :name="name" @changeName="changeName"></child-comp> </div> </template> <script> import childComp from 'path' export default{ data(){ return {name:'XXX'} }, components:{ childComp }, methods:{ changeName(newName){ this.name = newName; } } } </scritp>
以上就是一個(gè)完整的流程,父組件通過props將數(shù)據(jù)傳遞給子組件,子組件則觸發(fā)事件,由父組件監(jiān)聽,并做相應(yīng)處理。
2.ref
ref屬性可定義在子組件或原生DOM上,如果在子組件上,則指向子組件實(shí)例,如果在原生DOM上,則指向原生DOM元素(可以用做元素選擇,省去querySelector的煩惱)。
傳遞數(shù)據(jù)的思路:在父組件內(nèi)通過ref獲取子組件實(shí)例,然后調(diào)用子組件方法,并傳遞相關(guān)數(shù)據(jù)作為參數(shù)。代碼如下:
//子組件 <template> <div>{{parentMsg}}</div> </template> <script> export default{ data(){ return { parentMsg:'' } }, methods:{ getMsg(msg){ this.parentMsg = msg; } } } </script> //父組件 <template> <div> <child-comp ref="child"></child-comp> <button @click="sendMsg">SEND MESSAGE</button> </div> </template> <script> import childComp from 'path' export default{ components:{ childComp }, methods:{ sendMsg(){ this.$refs.child.getMsg('Parent Message'); } } } </scritp>
3.provide & inject 官方不推薦在生產(chǎn)環(huán)境使用
provide意為提供,當(dāng)一個(gè)組件通過provide提供了一個(gè)數(shù)據(jù),那么它的子孫組件就可以使用inject接受注入,從而可以使用祖先組件傳遞過來的數(shù)據(jù)。代碼如下:
//child <template> <div>{{appName}}</div> </template> <script> export default{ inject:['appName'] } </script> // root export default{ data(){ return { appName:'Test' } }, provide:['appName'] }
4.vuex
vue官方推薦的全局狀態(tài)管理插件。不細(xì)說。
到此這篇關(guān)于Vue中父組件向子組件傳遞數(shù)據(jù)的幾種方法的文章就介紹到這了,更多相關(guān)Vue 父組件向子組件傳遞數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue獲取v-for異步數(shù)據(jù)dom的解決問題
這篇文章主要介紹了vue獲取v-for異步數(shù)據(jù)dom的解決問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Vue 動(dòng)態(tài)添加表單實(shí)現(xiàn)動(dòng)態(tài)雙向綁定
動(dòng)態(tài)表單是一個(gè)常見的需求,本文詳細(xì)介紹了Vue.js中實(shí)現(xiàn)動(dòng)態(tài)表單的創(chuàng)建,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12使用VUE實(shí)現(xiàn)在table中文字信息超過5個(gè)隱藏鼠標(biāo)移到時(shí)彈窗顯示全部
這篇文章主要介紹了使用VUE實(shí)現(xiàn)在table中文字信息超過5個(gè)隱藏,鼠標(biāo)移到時(shí)彈窗顯示全部,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09Ant Design Upload 文件上傳功能的實(shí)現(xiàn)
這篇文章主要介紹了Ant Design Upload 文件上傳功能的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04vue3中使用reactive定義的變量響應(yīng)式丟失問題解決方案
這篇文章主要介紹了vue3中使用reactive定義的變量響應(yīng)式丟失問題的具體例子和解決方案,文章通過代碼示例給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-06-06Vue開發(fā)過程中遇到的疑惑知識點(diǎn)總結(jié)
vue是法語中視圖的意思,Vue.js是一個(gè)輕巧、高性能、可組件化的MVVM庫,同時(shí)擁有非常容易上手的API。下面這篇文章主要給大家總結(jié)了Vue在開發(fā)過程中遇到的疑惑知識點(diǎn),有需要的朋友可以參考借鑒,下面來一起看看吧。2017-01-01Vue自定義指令上報(bào)Google Analytics事件統(tǒng)計(jì)的方法
我們經(jīng)常需要接入統(tǒng)計(jì)服務(wù)以方便運(yùn)營,這篇文章主要介紹了Vue自定義指令上報(bào)Google Analytics事件統(tǒng)計(jì)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02vue自定v-model實(shí)現(xiàn)表單數(shù)據(jù)雙向綁定問題
vue.js的一大功能便是實(shí)現(xiàn)數(shù)據(jù)的雙向綁定。這篇文章主要介紹了vue自定v-model實(shí)現(xiàn) 表單數(shù)據(jù)雙向綁定的相關(guān)知識,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09