成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

vue2.0組件之間怎么傳值?組件傳輸方式淺析

vue組件之間怎么傳值?下面本篇文章給大家介紹一下vue2.0中的組件傳輸方式,希望對大家有所幫助!

vue2.0組件之間怎么傳值?組件傳輸方式淺析

組件化開發是VUE中重要的開發方式,當各組件分離開發時,就必然會存在組件之間傳值的問題。(學習視頻分享:vuejs視頻教程)

props傳prop值

props傳值是父子組件之間傳值最常見的方式,在引用子組件的時候,加入想要傳輸給子組件的數據并通過props進行數據獲取實現傳值。

Parent.vue <child :child-data = "childData"></child>  Child.vue export default {     // 數組寫法     props: ["child-data"];          // 對象寫法     props: {         child-data: {             type: String,             require: true, // 是否必須             default: "默認值", // 設置默認值             validator(val) {                 return true;             }, // 設置值的 驗證 ,驗證該值是否符合(true)         }     } }

當我們使用了props完成了父組件將數據傳給子組件,這種情況下,子組件從父組件中獲取到的數據并不能夠對數據進行更改,必須要使用$emit才能對傳輸的值進行修改。

$emit傳值修改prop

props$emit聯合使用,才能實現父子組件之間的傳值,也就是通過子組件$emit處理父組件的事件來實現子組件對父組件中的數據進行修改并傳值給父組件。

Parent.vue <child :child-data = "childData" @change-child="changeChild"></child> methods: {     changeChild(val) {         console.log(val); // 子組件傳遞過來的更改了的新值         this.childData = val;     } }  Child.vue methods: {     handleChildData() {         this.$emit("change-child", new-child-data);     } }

不僅是props,還可以通過model語法糖實現父子組件之間的傳值,而且這樣的傳值方式特別的繁瑣,會造成很多不便。

v-model傳prop值

model可以將value替代具體的值與$emit完成父子組件之間的傳值,寫法略有不同。

Parent.vue <child v-model = "childData"></child>  Child.vue export default {     props: ["value"], // value     methods: {         handleChildData() {             this.$emit("input", new-child-data);         }     } }

也可以通過定義model(不需要使用props獲取數據)來進行傳值。

Parent.vue <child v-model = "childData"></child>  Child.vue export default {     model: {         prop: "child-data", // 重新取名         event: "change-child-data",     },     methods: {         handleChildData() {             this.$emit("change-child-data", new-child-data);         }     } }

然而v-model只能處理一個prop,如果我們要處理多個prop的話,就不能夠使用了。

.sync實現多prop傳值

Parent.vue <child :child-data.sync = "childData"></child>  Child.vue export default {     props: ["child-data"],     methods: {         handleChildData() {             this.$emit("update:child-data", new-child-data);         }     } }

不過,在VUE3中,sync將不需要再使用,v-model將會支持多個prop傳值。

除了使用prop傳值,還可以通過ref指向組件獲取子組件中的屬性或者方法。

ref 子組件調用

通過ref指向組件,可以通過調用組件中的屬性或者方法進行獲取。

Parent.vue <child ref="child"></child> export default {     mounted() {         const child = this.$refs.child;         console.log(child.childData);         child.handleChild("handle-child-data");     } }  Child.vue export default {     data() {         return {             childData: "child-data",         }     },     methods: {         handleChild(val) {             console.log(val);         }     } }

不僅僅是可以通過ref來實現子組件數據獲取,還可以通過 children&parent 來傳遞父子組件中的數據。

$children & $parent

$children可以獲取到一個父組件的所有子組件的數組,可以通過其獲取到想要操作的子組件中的屬性或者方法。

$parent可以獲取到父組件(對象),對其進行調用。

Parent.vue this.$children[0].handleChild("change-child[0]-data");  Child.vue this.$parent.handleParent("change-parent-data");

但是前幾種方法(prop & ref)只能實現父子組件之間的傳值,并不能完成父組件與具有多層嵌套關系組件之間的傳值,如果真要實現的話,將會很麻煩,會造成代碼冗余、可復用性極低。

我們可以通過別的方法(attrs&listeners 、 provide&inject 、 eventBus)來實現多層嵌套組件與父組件之間的傳值。

$attrs & $listeners

$attrs包含了父組件中傳入孫子組件的數據(除了prop已傳遞的屬性、classstyle)。通過v-bind="$attrs可以傳入孫子組件中。

$listeners包含了父組件中的所有v-on事件(除了包含.native修飾器的)。通過v-on="$listeners將父組件中的方法傳給孫子組件。

<sun-child v-bind="$attrs" v-on="$listeners"></sun-child>

provide & inject

provide可以給后代組件提供需要的數據或者方法(不管是嵌套多少層的組件)。

inject可以獲取任何父組件中提供的數據或者方法,直接使用。

Parent.vue provide() {     return {         parent-data: "parent-data",         handleParent: this.handleParent,     } }, methods: {     handleParent() {}, }  Sun-Child.vue inject: ["parent-data", handleParent"],

但是provide & inject是不可控的,因為這個里面傳遞的數據并不是響應式的(其中一個數據改變,并不會影響另外的),當某個嵌套組件使用某個傳輸的值的時候并不能追溯到是哪個父組件,所以,這種方式并不是特別可取。

eventBus 中央事件總線

eventBus,顧名思義,中央事件總線,可以通過其實現各個層套的組件之間的傳值,包括兄弟組件。

我們可以通過將其抽離出來成一個單獨的js文件(Bus.js),掛載到全局(Vue.prototype.$bus)或者按需引入,又或者是存入到根對象的data上。

// 以按需引入的情況為例 import Bus from 'Bus.js'  Bus.$emit("handleBus", "自定義事件"); // 向外部傳遞數據  Bus.$on("handleBus", data => {}); // 觸發事件,獲取數據  Bus.$off("handleBus"); // 取消對自定義事件的監聽

但是這些方法也只是適用于小范圍內的數據使用較少的組件中,需要傳遞的數據過多的話,維護會很麻煩,且可復用性也極低。當數據傳遞量大的時候,建議使用vuex狀態管理器常用)。

Tips

其實也可以通過插槽進行父子組件的值傳遞,不過插槽的作用不止如此,但是如果有遇到使用插槽更方便的情況的時候可以使用插槽slot

【相關視頻教程推薦:web前端】

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
国产日韩精品欧美一区喷水| 国产在线精品一区二区| 国产黑色丝袜在线视频| 国产亚洲欧美日韩剧的剧情介绍| 黑人AV免费电影| 久久人妻无码一区二区三区av| 麻花豆传媒剧国产MV在线下载| 欧美性猛交XXX嘿人猛交| 日韩无码一区视频| 希露薇の繁殖计划游戏| 亚洲人成无码网站在线观看野花 | 毛耸耸熟妇性XXXX交潮喷| 欧美性生交XXXXX免费观看| 熟妇人妻无乱码中文字幕真矢织江 | 色老板精品无码免费视频| 无码日韩人妻AV一区免费| 亚洲色成人一区二区三区| 99精品视频在线观看免费| 粉嫩虎白女P虎白女在线| 国产在线拍揄自揄视频网站| 巨大黑人极品videos精品| 人妻AV资源先锋影音AV资源| 雯雅婷在工地被民工玩| 亚洲人成网站在线播放942| AV无码人妻一区二区三区牛牛| 高潮喷视频在线无码| 狠狠噜天天噜日日噜AV| 你真紧你这是要我的命吗| 少妇做爰XXXⅩ性XXXHD| 亚洲男人AV天堂男人社区| 中文字幕人妻一区二区在线视频| 厨房掀开馊了裙子挺进电影| 黑人巨大VIDEOS极度另类| 女人扒开屁股桶爽6O分钟| 玩小雪跪趴把腿分到最大影视| 亚洲日韩AV无码中文 | 免费A级毛片无码| 熟妇高潮一区二区精品视频| 亚洲蜜桃无码一区二区三区| MAC水蜜桃色314| 国产人成高清在线视频99最全资| 麻豆成人传媒一区二区| 少妇精品久久久久www| 亚洲色欲色欲大片WWW无码 | 青青青伊人色综合久久| 小妖精好爽H快穿共妻| 18禁止看的免费污网站| 国产精品无码翘臀在线观看| 迈开腿让我尝一下你的味道一| 四虎国产成人永久精品免费| 野花韩国日本高清免费5| 公么大龟弄得我好舒服第一| 久久久久亚洲AV成人网人人网站| 日韩精品无码一区二区三区| 亚洲一区二区无码偷拍| 恶毒美人长批后被宿敌爆炒了| 久久精品国产久精国产果冻传媒| 日韩人妻无码精品系列| 亚洲夂夂婷婷色拍WW47| 国产AV一区二区三区日韩| 麻花豆传媒剧国产入口| 亚洲AV成人综合网成人| WWW免费视频在线观看播放| 精品国产午夜福利在线观看| 日韩精品无码AV中文无码版| 一边做饭一边躁狂怎么办呢69| 够了够了到高C了| 免费无码又爽又刺激高潮| 亚洲AV噜噜在线成人网站女同| 扒开女人P添大荫蒂| 久久久久久精品国产亚洲AV麻豆| 婷婷成人丁香五月综合激情| 98精产国品一二三产区区| 交换配乱吟粗大SNS840| 少妇ⅩXXOOOZZXXHD| 2020久久国产综合精品SWA| 狠狠色噜噜狠狠狠7777奇米| 日韩视频一区二区三区| 中国人妻XXXXX免费看| 好男人资源在线WWW免费| 三上悠亚SSⅠN939无码播放| 欲求不满邻居的爆乳在线播放| 国产凸凹视频一区二区| 日韩无码视频一区二区三区| 做AJ的姿势教程大全图| 精品国产乱码久久久久久小说 | 女人无遮挡无内衣内裤网站| 亚洲另类激情综合偷自拍图片| 动漫成人无码免费视频在线播 | 精品国产乱码久久久久久小说| 天天在线看无码AV片| CHINASEXSEX高潮对白| 久久亚洲欧美国产精品| 亚洲国产欧美在线人成| 国产精品无码无片在线观看3D| 日产乱码一二三区别免费必看 | 亚洲AV无码国产蜜桃麻豆| 公交车被多男摁住灌浓精| 琪琪女色窝窝777777| 重囗味SM在线观看无码| 久久AV喷吹AV高潮AV欧美| 亚洲AV无码久久| 国产精品欧美福利久久| 色老头精品午夜福利视频| WW欧日韩视频高清在线| 免费污站18禁的刺激| 伊人久久精品亚洲午夜| 久久精品无码AV| 亚洲国产成人BT天堂| 国产亚洲精久久久久久无码7| 天码AV高清毛片在线看_| 粗大在少妇体内进进出出| 欧美老熟妇又粗又大| 性欧美玩弄性少妇HD| 亚洲精品无码av中文字幕电影网站 | 亚洲国产AⅤ成人精品无吗| 国产强奷在线播放| 无码精品一区二区三区视频色欲网| 丰满少妇女人A毛片视频| 人妻人人澡人人添人人爽冫 一| 99精品视频在线观看免费| 免费热播女人毛片| 14萝自慰专用网站| 麻花传媒剧国产MV在线观看| 在线观看无码H片| 久久精品网站免费观看| 亚洲AV无码一区二区三区系列| AV成人片无码夜色AV大胸| 久久精品国产久精久精| 余年周婉小说全文免费阅读完整版| 国精一二二产品无人区免费应用| 无码精品A∨在线观看| 国产盗摄XXXX视频XXXX| 无码一区18禁3D| 国产熟女亚洲精品麻豆| 小嫩模无套内谢第一次| 国语自产第1国语自产第10页| 亚洲AV无码专区在线| 精品乱码一区二区三区av| 亚洲日本高清成人AⅤ片| 久久WWW免费人成_网站| 夜里18款禁用B站入APP软件| 久久丫精品国产亚洲AV| 中文字幕人妻被公上司喝醉在线| 妺妺窝人销魂体色www| ZOOM与人性ZOOM2023| 日韩中文人妻无码不卡| 丰满老熟好大BBB| 无码纯肉视频在线观看喷水| 国精产品W灬源码1688伊| 亚洲啪啪AV无码片| 麻豆国产成人AV在线播放欲色| 26UUU另类亚洲欧美日本| 欧美在线 | 亚洲| 东京热无码人妻一区二区AV| 无码国产玉足脚交久久2020 | 国产在线视频 | 传媒| 亚洲色精品AⅤ一区区三区| 毛片无码免费无码播放| 宝贝张开腿嗯啊高潮了视频| 天美传媒MV在线看免费| 好男人HD免费观看| 一本大道香蕉大无线吗| 欧美最猛黑人XXXX黑人猛交3p| 永久亚洲成A人片777777| 欧美最厉害的喷水VIDEOS| 纯肉无遮挡H肉动漫在线观看网址 纯肉无遮挡H肉动漫在线观看国产 | 精品人伦一区二区三区潘金莲 | 亚洲AV片不卡无码一| 久久国产乱子伦免费精品无码| 中文字幕一线产区和二线| 欧洲女人牲交视频免费| 国产成人无码免费视频麻豆| 亚洲VS成人无码人在线观看堂| 久久中文字幕人妻丝袜系列| 锕锕锕锕锕锕~好深啊APP| 无码精品人妻一区二区三区免费看 | S货叫大点声C烂你的SB| 天堂AV无码大芭蕉伊人AV不卡 | 你的婚礼免费观看完整版| 高清欧美精品XXXXX在线看| 亚洲AV无码专区亚洲AV紧身裤| 乱码人妻一区二区三区| 大杳蕉在线影院在线播放| 亚洲а∨天堂男人色无码蜜臀69| 男女爽爽无遮挡免费视频| 国产成人亚洲精品无码综合原创 | 槽溜2021入口一二三四绿巨人| 小受呻吟高潮GV在线观看| 两个男人吮她的花蒂和奶水视频| 成人无码H在线观看网站| 亚洲国产精品成人网址天堂| 女人与公拘交酡ZOZO| 国产精品毛片无遮挡| 在线麻豆精东9制片厂AV影现网| 色吊丝AV中文字幕| 久久久精品久久久久久96| 大肉大捧一进一出好爽视频MBA | 久久精品国内一区二区三区| 白嫩光屁股BBBBBBBBB|