97免费在线观看视频 I 午夜夫妻视频 I 久久久久久网站 I 天堂网男人 I 欧美大波大乳人奶 I 丝袜 中出 制服 人妻 美腿 I 窝窝午夜理论片影院 I 日韩在线伦理电影 I 韩国特级毛片 I 亚洲欧美另类激情 I 在线成人日韩 I 麻豆视频免费看 I 黄色生活毛片 I 极品一线天小嫩嫩真紧 I 色久天堂 I 久久久久久黄色片 I 林智妍三级露全乳电影视频 I 大肉大捧一进一出好爽视频 I 空乘伦理hd I 少妇口述与子做过爱 I 成人免费影片 I 国产精品国内免费一区二区三区 I 日韩制服一区 I 青青草福利在线 I 日本在线观看不卡视频 I 婷婷六月综合亚洲 I 国产又粗又黄又硬 I 美女扒开屁股让男子桶爽 I 欧美性午夜视频观看 I 欧美狠狠插 I 亚洲福利在线观看视频 I 无码抽搐高潮喷水流白浆 I 亚洲欧美国产日韩色伦 I 你懂的视频网站在线观看 I www.蜜桃视频在线观看 I 日本无码人妻精品一区二区蜜桃 I 久久中文字幕人妻丝袜 I 碰草在线视频 I 日韩精品成人av网站

Vue組件通信方式居然有這么多?你了解幾種

2020/10/28 10:24:47   閱讀:3149    發(fā)布者:3149

1. props/$emit

props和$emit相信大家十分的熟悉了,這是我們最常用的vue通信方式。
props
props可以是數(shù)組或?qū)ο螅糜诮邮諄碜愿附M件通過v-bind傳遞的數(shù)據(jù)。當(dāng)props為數(shù)組時,直接接收父組件傳遞的屬性;當(dāng) props 為對象時,可以通過typedefaultrequiredvalidator等配置來設(shè)置屬性的類型、默認值、是否必傳和校驗規(guī)則。
$emit
在父子組件通信時,我們通常會使用$emit來觸發(fā)父組件v-on在子組件上綁定相應(yīng)事件的監(jiān)聽。

2. v-slot

v-slot是 Vue2.6 版本中新增的用于統(tǒng)一實現(xiàn)插槽和具名插槽的api,用于替代slot(2.6.0廢棄)slot-scope(2.6.0廢棄)scope(2.5.0廢棄)api
v-slot
template 標(biāo)簽中用于提供具名插槽或需要接收 prop 的插槽,如果不指定 v-slot ,則取默認值 default

3. $refs/$parent/$children/$root

我們也同樣可以通過 $refs/$parent/$children/$root 等方式獲取 Vue 組件實例,得到實例上綁定的屬性及方法等,來實現(xiàn)組件之間的通信。
$refs
我們通常會將 $refs 綁定在DOM元素上,來獲取DOM元素的 attributes。在實現(xiàn)組件通信上,我們也可以將 $refs 綁定在子組件上,從而獲取子組件實例。
$parent
我們可以在 Vue 中直接通過this.$parent來獲取當(dāng)前組件的父組件實例(如果有的話)。
$children
同理,我們也可以在 Vue 中直接通過this.$children來獲取當(dāng)前組件的子組件實例的數(shù)組。但是需要注意的是,this.$children數(shù)組中的元素下標(biāo)并不一定對用父組件引用的子組件的順序,例如有異步加載的子組件,可能影響其在 children 數(shù)組中的順序。所以使用時需要根據(jù)一定的條件例如子組件的name去找到相應(yīng)的子組件。
$root
獲取當(dāng)前組件樹的根 Vue 實例。如果當(dāng)前實例沒有父實例,此實例將會是其自己。通過 $root ,我們可以實現(xiàn)組件之間的跨級通信。

4. $attrs/$listener

$attrs 和 $listeners 都是 Vue2.4 中新增加的屬性,主要是用來供使用者用來開發(fā)高級組件的。

$attrs
用來接收父作用域中不作為 prop 被識別的 attribute 屬性,并且可以通過v-bind="$attrs"傳入內(nèi)部組件——在創(chuàng)建高級別的組件時非常有用。
試想一下,當(dāng)你創(chuàng)建了一個組件,你要接收 param1 param2param3 …… 等數(shù)十個參數(shù),如果通過 props,那你需要通過props: ['param1', 'param2', 'param3', ……]等聲明一大堆。如果這些 props 還有一些需要往更深層次的子組件傳遞,那將會更加麻煩。
而使用 $attrs ,你不需要任何聲明,直接通過$attrs.param1$attrs.param2……就可以使用,而且向深層子組件傳遞上面也給了示例,十分方便。

$listeners
包含了父作用域中的 v-on 事件監(jiān)聽器。它可以通過 v-on="$listeners" 傳入內(nèi)部組件——在創(chuàng)建更高層次的組件時非常有用,這里

5. provide/inject

provide/inject這對選項需要一起使用,以允許一個祖先組件向其所有子孫后代注入一個依賴,不論組件層次有多深,并在其上下游關(guān)系成立的時間里始終生效。如果你是熟悉React的同學(xué),你一定會立刻想到Context這個api,二者是十分相似的。
provide
是一個對象,或者是一個返回對象的函數(shù)。該對象包含可注入其子孫的 property ,即要傳遞給子孫的屬性和屬性值。
injcet
一個字符串?dāng)?shù)組,或者是一個對象。當(dāng)其為字符串?dāng)?shù)組時,使用方式和props十分相似,只不過接收的屬性由data變成了provide中的屬性。當(dāng)其為對象時,也和props類似,可以通過配置defaultfrom等屬性來設(shè)置默認值,在子組件中使用新的命名屬性等。

6. eventBus

eventBus又稱事件總線,通過注冊一個新的Vue實例,通過調(diào)用這個實例的$emit$on等來監(jiān)聽和觸發(fā)這個實例的事件,通過傳入?yún)?shù)從而實現(xiàn)組件的全局通信。它是一個不具備 DOM 的組件,有的僅僅只是它實例方法而已,因此非常的輕便。
我們可以通過在全局Vue實例上注冊:

// main.js

Vue.prototype.$Bus = new Vue()

但是當(dāng)項目過大時,我們最好將事件總線抽象為單個文件,將其導(dǎo)入到需要使用的每個組件文件中。這樣,它不會污染全局命名空間:

// bus.js,使用時通過import引入

import Vue from 'vue'

export const Bus = new Vue()

7. Vuex

當(dāng)項目龐大以后,在多人維護同一個項目時,如果使用事件總線進行全局通信,容易讓全局的變量的變化難以預(yù)測。于是有了Vuex的誕生。
Vuex
是一個專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測的方式發(fā)生變化。
有關(guān)Vuex的內(nèi)容,可以參考Vuex官方文檔,我就不在這里班門弄斧了,直接看代碼。


主站蜘蛛池模板: 黄色av一区二区 | 三级毛片一 | 人妻少妇精品无码专区app | 亚洲国产成人精品福利 | 亚洲一区二区 | 久久这里都是精品 | 亚洲国产精品嫩草影院 | 亚洲乱码中文字幕在线 | 人妻少妇偷人无码视频 | av手机免费在线观看 | 国产av无码专区国产乱码 | 超碰97人人让你爽 | 国产乱码精品一区二区三 | 办公丝袜av一区二区三区 | 四虎成人精品无码永久在线 | 免费人成视频网站在线18 | 日本japanese极品少妇 | 国产成人在线观看免费网站 | 在线亚洲午夜片av大片 | 中文字幕高清在线 | 久久久中日ab精品综合 | 国自产偷精品不卡在线 | 成人看片黄a免费看小说 | 色.com| 又色又爽又高潮免费观看 | 偷拍区清纯另类丝袜美腿 | 婷婷射吧| 日本激情中文字幕 | 性色a∨精品高清在线观看 岛国激情片 | 欧美阿v天堂视频在99线 | 日韩精品高清在线 | 18禁无遮拦无码国产在线播放 | av狠狠色超碰丁香婷婷综合久久 | av二区在线| 一区二区波多野结衣 | 亚洲人成色7777在线观看不卡 | 日韩欧美网站 | 在线人视频观看免费 | 日韩精品一卡2卡3卡4卡新区视频 | 欧美一区二区网站 | 欧美精品日韩在线 | 美女隐私视频黄www曰本 | 免费看黄在线网站 | 无码国内精品久久人妻蜜桃 | 91精品国产欧美一区二区成人 | 亚洲无av| 亚洲精品av一二三区无码 | 亚洲一区二区三区日本久久九 | 欧美整片在线 | 欧美高清视频一区二区 | 久久国产午夜精品理论片最新版本 | 国产精品国产三级国产av′ | 樱桃成人精品视频在线播放 | 无码中文国产不卡视频 | 精品国内自产拍在线观看视频 | 91亚洲综合| 精品 日韩 国产 欧美 视频 | 久久久噜噜噜久噜久久 | 99精品国产福利一区二区 | 手机看片福利永久 | 伊人久久av | 日韩精品一区二区三区四 | 欧美在线视频观看 | 欧美成人高清视频a在线看 国产精品一区饥渴老女人 女人被躁到高潮嗷嗷叫免费 | 欧美日韩视频在线播放 | 欧美z0zo人禽交免费观看99 | 久久亚洲色www成爱色 | 欧美日韩八区 | 久久人妻xunleige无码 | 78色淫网站女女免费 | 最新天堂中文在线 | 真实人妻互换毛片视频 | 青青草原精品99久久精品66 | 亚洲男人天堂av | 蜜桃视频在线观看www社区 | 波多野结衣一区二区三区在线观看 | 国产大片黄 | 国产精品系列无码专区 | 丰满大乳奶区一区二 | 亚洲精品久久久一二三区 | 老司机福利午夜 | 日韩av不卡在线播放 | 午夜天堂在线观看 | 国产免费黄网站 | 熟女人妻一区二区三区免费看 | 在线观看亚洲区 | 亚洲图色视频 | 精品色区 | 欧美精品与黑人又粗又长 | 欧美同性猛交 | 亚洲色图少妇 | 亚洲熟女乱色一区二区三区 | 涩涩视屏| 99国语露脸久久精品国产ktv | 国产a√精品区二区三区四区 | 18禁网站免费无遮挡无码中文 | 欧美成人不卡视频 | 中文人妻熟女乱又乱精品 | 国产精品成人免费视频一区 |