gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

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

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號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
拔插拔插华人永久免费| 九一免费在线观看| 亚洲精品久久久久久宅男| 黄大色黄女片18第一次| 午夜剧场在线免费观看| 热这里只有精品| 日韩一级性生活片| 熟女人妇 成熟妇女系列视频| 国产性xxxx18免费观看视频| 91在线视频观看免费| 五月婷婷六月丁香激情| 日本三级福利片| 人人干视频在线| www.久久久精品| 亚洲天堂第一区| 成人黄色av片| 亚洲欧美日韩一级| 国产激情片在线观看| 欧美成人xxxxx| 色一情一区二区| 日韩激情视频一区二区| 欧美污视频网站| 日本一本在线视频| 男女激情无遮挡| www.com污| 成人黄色大片网站| 欧美第一页浮力影院| 男人添女人荫蒂免费视频| 老司机午夜av| 91午夜在线观看| 天堂av2020| 少妇高潮喷水在线观看| 亚洲第一色av| 欧美三级一级片| av影院在线播放| 一区二区三区欧美精品| 777777av| 青青草视频在线视频| 国产aⅴ爽av久久久久| 玩弄中年熟妇正在播放| 日本丰满大乳奶| 少妇一级淫免费放| 欧美牲交a欧美牲交| 欧美a级黄色大片| 欧美成人福利在线观看| 国产美女三级视频| www在线观看免费| 97超碰在线视| 日日夜夜精品视频免费观看| 国产精品无码av无码| 欧美成人精品免费| 日韩精品第1页| av亚洲天堂网| 亚洲福利精品视频| 一本色道无码道dvd在线观看| 日韩国产小视频| 99久久99精品| 五月六月丁香婷婷| 欧美三级理论片| 成人性做爰aaa片免费看不忠| 免费看毛片的网址| 成人免费a级片| 欧美黄网在线观看| 成人在线免费高清视频| 色婷婷777777仙踪林| 免费成人深夜夜行网站视频| www.桃色.com| 中文字幕第三区| 玖玖精品在线视频| av磁力番号网| 无颜之月在线看| 成人黄色大片网站| 国产原创中文在线观看| 怡红院av亚洲一区二区三区h| 国产成人艳妇aa视频在线| 国产夫妻自拍一区| 99在线精品免费视频| 男人日女人逼逼| 欧美日韩性生活片| 久久久免费视频网站| 日日碰狠狠躁久久躁婷婷| 免费观看精品视频| 国产小视频精品| 五月天婷婷亚洲| 国产日本欧美在线| 少妇大叫太大太粗太爽了a片小说| wwwjizzjizzcom| 欧美a v在线播放| 日韩精品一区二区三区久久| 中文字幕在线观看第三页| 日日噜噜夜夜狠狠| 久久久国产精华液999999| 午夜国产福利在线观看| 二级片在线观看| 欧美大片在线播放| 搡女人真爽免费午夜网站| www.久久91| 亚洲精品天堂成人片av在线播放| 丁香花在线影院观看在线播放| av高清在线免费观看| 免费午夜视频在线观看| 国产三级生活片| a级黄色片免费| 女性隐私黄www网站视频| www.午夜av| 欧美网站免费观看| 免费成年人高清视频| 日韩在线观看a| 香蕉视频网站入口| 国产乱子伦精品视频| 亚洲精品无码久久久久久| 孩娇小videos精品| 黄色小视频大全| 不卡av免费在线| 老司机午夜网站| 爱情岛论坛成人| av免费看网址| 97超碰成人在线| 国产精品一区二区免费在线观看| 成人日韩在线视频| 久久国产亚洲精品无码| 国产免费色视频| 牛夜精品久久久久久久| 国内少妇毛片视频| 在线观看日本一区二区| 国产中文字幕二区| 先锋影音男人资源| 老司机午夜性大片| 人妻有码中文字幕| 国产精品av免费观看| 男人女人黄一级| 日韩av在线播放不卡| 不卡中文字幕在线观看| 超碰网在线观看| 免费一级特黄毛片| 男女视频在线观看网站| 精品久久久久久中文字幕2017| 无码av天堂一区二区三区| 日韩人妻精品一区二区三区| 亚洲欧美激情网| 免费观看成人在线视频| 国产av国片精品| 黑人巨茎大战欧美白妇| 超碰97免费观看| 五月天中文字幕在线| 色七七在线观看| 日韩手机在线观看视频| 日韩欧美视频网站| 日本福利视频一区| 国产传媒久久久| 人人妻人人澡人人爽欧美一区| 99九九99九九九99九他书对| 国产三区在线视频| 欧美性大战久久久久xxx| 欧美不卡在线播放| 男人的天堂狠狠干| 国产老熟妇精品观看| av在线com| 久久香蕉视频网站| 法国空姐在线观看免费| 做爰高潮hd色即是空| 香蕉视频xxxx| 国产一级大片免费看| 狠狠精品干练久久久无码中文字幕| 大桥未久一区二区三区| 亚洲高潮无码久久| 精品一区二区三区无码视频| 久久这里只有精品18| 国产亚洲黄色片| 亚洲欧洲日产国码无码久久99| 你真棒插曲来救救我在线观看| 精品无码国产一区二区三区av| 欧洲精品在线播放| 日日碰狠狠添天天爽超碰97| 男女av免费观看| 亚洲免费黄色网| 欧美日韩在线免费观看视频| 91大学生片黄在线观看| 成年人午夜免费视频| 人妻有码中文字幕| www.com久久久| 大桥未久一区二区| 国产在线播放观看| www日韩在线观看| 手机免费av片| 中文字幕日韩精品无码内射| 日韩亚洲欧美视频| 超碰影院在线观看| 日韩欧美中文视频| 青草视频在线观看视频| 乱子伦视频在线看| 精品国产乱码久久久久久1区二区| 欧美与动交zoz0z| 日韩一级性生活片| 自拍偷拍21p| 国产成人一区二区三区别| 国产真人无码作爱视频免费| 青少年xxxxx性开放hg| 怡红院av亚洲一区二区三区h| 999在线观看|