溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue組件通信方式有哪幾種

發(fā)布時間:2022-10-12 15:57:44 來源:億速云 閱讀:127 作者:iii 欄目:開發(fā)技術

本篇內容主要講解“vue組件通信方式有哪幾種”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“vue組件通信方式有哪幾種”吧!

具體方法如下:

1.使用props/$emit實現(xiàn)父子組件通信

props:props是用于接收來自父組件通過v-bind傳遞的數(shù)據(jù),當props為數(shù)組時,直接接收父組件傳遞的屬性;當props為對象時,可以通過type、default、required、validator等配置來設置屬性的類型、默認值、是否必傳和校驗規(guī)則。

$emit:在進行父子組件通信時,可以使用$emit來觸發(fā)父組件v-on在子組件上綁定相應事件的監(jiān)聽。

2.使用$refs/$parent/$children/$root實現(xiàn)父子組件通信

$refs:可以將$refs綁定DOM元素,在獲取DOM元素的attributes屬性,也可以將$refs綁定子組件,從而獲取子組件實例。

$parent:vue中可以直接通過this.$parent來獲取當前組件的父組件實例。

$children:vue中可以直接通過this.$children來獲取當前組件的子組件實例的數(shù)組。

$root:在獲取當前組件樹的根vue實例時,若當前實例沒有父實例,可以通過$root實現(xiàn)組件之間的跨級通信。

3.使用$attrs/$listener實現(xiàn)隔代組件通信

$attrs:$attrs是用來接收父作用域中不作為prop被識別的attribute屬性,且可以通過v-bind="$attrs"傳入內部組件,常用于創(chuàng)建高級別的組件。

$listeners:$listeners中包含了父作用域中的 v-on 事件監(jiān)聽器,可以通過可以通過 v-on="$listeners" 傳入內部組件,常用于創(chuàng)建更高層次的組件。

4.使用provide/inject實現(xiàn)隔代組件通信

provide:provide是一個對象或是一個返回對象的函數(shù),其對象包含可注入其子孫的property,即要傳遞給子孫的屬性和屬性值。

injcet:當injcet為字符串數(shù)組時,接收的屬性會由data變成provide中的屬性;當injcet為為對象時,可以通過配置default和from等屬性來設置默認值,在子組件中使用新的命名屬性等。

5.使用Vuex實現(xiàn)父子、隔代、兄弟組件通信

Vuex是一個Vue.js應用程序開發(fā)的狀態(tài)管理模式,其采用集中式存儲管理應用的所有組件的狀態(tài),當組件從store中讀取狀態(tài)的時,若store中的狀態(tài)發(fā)生變化,相應的組件也會得到高效更新。

6.使用eventBus實現(xiàn)父子、隔代、兄弟組件通信

eventBus是事件總線,是注冊一個新的vue實例,在調用這個實例的$emit和$on等來監(jiān)聽和觸發(fā)這個實例的事件,通過傳入?yún)?shù)從而實現(xiàn)組件的全局通信。

到此,相信大家對“vue組件通信方式有哪幾種”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

vue
AI