成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院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號
年轻夫妻把小孩哄睡后开监控| 人妻激情另类乱人伦人妻| 内射爆草少妇精品视频| 欧洲女RAPPER潮水大豆| 色吊丝AV中文字幕| 性高湖久久久久久久久| 亚洲人JIZZ日本人| 999久久久无码国产精品| 成人免费毛片内射美女APP| 国产精品∧V在线观看| 狠狠精品干练久久久无码中文字幕 | 精品国产三级A∨在线| 麻豆国产果冻自制传媒| 人妻少妇乱子伦无码专区 | 丰满老熟好大BBBBBB| 国产亚洲AV片在线观看播放按摩| 久久久久精品国产AV麻豆| 欧美人伦禁忌DVD| 天天躁日日躁狠狠躁欧美老妇小说| 亚洲Av无码一区二区三区大黄瓜| 影音先锋女人AV女色资源| 爱丫爱丫影院在线看免费| 国产精品第一区揄拍无码| 精品精品国产高清A级毛片| 男人J桶进女人P无遮挡| 少妇内射一区27p| 亚洲欧好州第一的日产SUV| AV无码人妻一区二区三区牛牛| 国产AV麻豆MAG剧集| 精品极品三大极久久久久| 欧美人与动牲交免费观看| 无码精品一区二区三区视频色欲网 | 丰满妇女强高潮18ⅩXXX在线| 饥渴人妻被快递员玩弄视频| 欧美粗大无套GAY| 无码熟熟妇丰满人妻PORN| 有人有在线观看的片吗WWW| 成人片黄网站色多多WWW| 精品国产乱子伦一区二区三区 | 久久久久精品无码AV| 日本黑人乱偷人妻中文字幕| 亚洲AV无码国产蜜桃麻豆| 97精品人妻一区二区三区香蕉| 国产高清中文版HD中字 | 国精品无码一区二区三区在线蜜臀 | 成人乱码一区二区三区AV| 精品国产亚洲AV麻豆尤物| 人妻少妇不满足中文字幕| 亚洲AV无码兔费综合| FREEZEFRAME丰满老妇| 含着奶头搓揉深深挺进| 青梅被从小摸到大H补课1视频| 亚洲AⅤ无码一区二区波多野| 99久久精品国产一区二区三区 | 短篇公交车高H肉辣全集目录| 精品人妻一区二区三区| 三级4级全黄60分钟| 一二三四免费中文在线| 国产AV无码专区亚洲AV男同| 免费A级毛片无码A∨中文字幕| 无码人妻av免费一区二区三区| 中文字幕亚洲综合久久| 国产真实乱XXXⅩ视频| 人妻无码不卡在线视频| 亚洲色欲一区二区三区在线观看 | 精品无人区麻豆乱码1区2区| 色欲AV永久无码精品无码| 中文亚洲AV片不卡在线观看| 国产亚洲精品拍拍拍拍拍| 日本入室强伦姧在线观看| 一二三四视频社区在线播放中国| 国产精品538一区二区在线| 欧美VA亚洲VA在线观看| 亚洲日韩欧美一区久久久久我| 国产AV无码专区亚洲AV毛片搜| 免费人成网WW555| 亚洲精品无码乱码成人爱色| 国产边做边吃奶AⅤ视频免费| 女人脱精光直播APP下载| 亚洲人成网站18禁止影院| 国产成人一区二区三区APP| 欧美日本操逼视频| 野花高清影视免费观看西瓜| 国产女主播白浆在线看| 日韩成人精品久久网站| 4D肉蒲团之性奴大战奶水| 精品三级久久久久电影我网| 无码国产精品一区二区免费式直播 | 欧美 亚洲 国产 日韩 综AⅤ| 亚洲精品无码久久久久AV麻豆| 国产精品免费视频网站| 日韩精品视频一区二区三区| 装睡被陌生人摸出水好爽| 久久99精品久久久久久不卡| 西西人体午夜视频无码| 高清VIDEOSGRATIS欧| 欧式春画图片大全欣赏简单| 永久免费观看午夜成人网站| 精品国产青草久久久久福利| 午夜成人无码片在线观看影院| 丰满少妇人妻HD高清果冻传媒 | 亚洲AV无码国产精品色午夜软件| 灌溉系统NPC游戏双男主| 人与物VIDEOS另类XXXX| 99RE6热视频这里只精品首页| 久久精品亚洲精品无码金尊 | 久久无码AV中文出轨人妻| 亚洲丰满多毛XXXⅩ熟妇| 国产午夜精品免费一区二区三区| 舌L子伦熟妇ΑV| 大陆极品少妇内射AAAAA| 日本VA欧美VA精品发布| 爱丫爱丫在线影院| 人妻无码熟妇乱又伦精品| JAPANESE极品丰满少妇| 欧美变态口味重另类在线视频| 中文字幕免费不卡二区| 脔到她哭H粗话H好爽五星视频| 野花免费观看高清电视| 久久精品露脸对白国产| 亚洲人成色A777777在线观 | 人人爽人人爽人人片AV东京热| 99久久精品日本一区二区免费| 免费无码又爽又刺激聊天APP | 最新中文字幕AV无码不卡| 猫咪WWW免费人成网站| 越看越湿的啪啪的小说免费| 里番ACG ※里番_ACG工口| 中文天堂在线WWW最新版官网| 麻花传媒CEO免费观看| 中文字幕大香视频蕉免费| 免费人成视网站在线不卡| 97婷婷狠狠成为人免费视频| 欧美老人巨大XXXX做受视频| WW欧日韩视频高清在线| 日本公与丰满熄的| 疯狂做受XXXX高潮视频免费| 天天摸天天碰成人免费视频| 国产精品揄拍100视频| 亚洲AV噜噜在线成人网站女同| 国内永久免费CRM系统Z在线| 亚洲精品偷拍无码不卡AV| 久久久99久久久国产自输拍| 在教室伦流澡到高潮H强圩电影| 免费无码午夜福利片69| 宝贝别忍着喷出来| 手机免费AV片在线观看| 国产精品天干天干| 亚洲精品成人无码中文毛片| 久久人妻XUNLEIGE无码| 99久久人妻无码中文字幕系列| 日本老肥婆BBBWBBBWZR| 国产福利萌白酱精品TV一区| 亚洲AV无码一区二区三区电影| 久久精品久久精品中文字幕| 27邪态恶动图GIF喷水赞一把| 人人妻人人爽人人添少妇| 国产SM调教视频在线观看| 亚洲AⅤ男人的天堂在线观看| 久久99精品久久久久久水蜜桃| 中文字幕无码精品三级在线电影 | 免费观看电视剧全集在线播放| CHINESE农村老妓女| 少妇性饥渴VIDEOS| 国内毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 欧美日韩一区二区三区自拍 | 亚洲日本VA中文字幕| 免费无码AV污污污在线观看 | 久久国产精品香蕉成人APP| 1000部又爽又黄无遮挡的视频| 日韩AV高清无码| 国精产品一区二区三区有限 | 国色天香A区与B区| 在糖心VLOG唐伯虎女主角是谁| 人妻少妇乱子伦无码专区| 国产乱了真实在线观看| 亚洲熟妇色自偷自拍另类| 欧美日韩人妻精品| 国产精品亲子乱子伦XXXX裸| 亚洲中文无码成人片在线观看| 欧美乱大交XXXXX| 国产粉嫩馒头无套内在线观看免费| 亚洲精品无码AV中文字幕电影网 | JAPANESE春药高潮| 午夜理论片YY44880影院| 老熟妇愉情MAGNET洗澡| 丁香五月婷激情综合第九色| 亚洲精品午夜国产VA久久成人| 欧美性猛交aaaa乱大交| 国产毛片一二区三区四区| 中文毛片无遮挡高潮免费 | 国产成人精品亚洲一区| 亚洲中文字幕码在线电影| 日本十八禁视频无遮挡| 嘿咻嘿咻男女免费专区| JAPANESE国产在线看| 亚洲Av无码一区二区三区大黄瓜 | 人妻少妇(11一32)章| 韩国善良的小峓子在钱| Chinese45丰满成熟HD|