如何實現乙個自定義元件,不同元件之間如何通訊?

2021-08-21 09:04:25 字數 964 閱讀 1208

元件需要註冊後才可以使用,有全域性註冊和區域性註冊兩種方式

在例項建立前通過

來註冊全域性元件,不必把每個元件都註冊到全域性,在例項中,使用components選項可以區域性註冊元件,註冊後的元件只有在該例項作用域下有效,元件中也可以使用components選項來註冊元件,使元件可以巢狀。

元件關係可分為父子元件通訊、兄弟元件通訊、跨級元件通訊

父子元件通訊:

父元件向子元件通訊,通過props傳遞資料

子元件向父元件傳遞資料時,用到自定義事件,子元件用$emit()觸發事件,父元件用$on()監聽子元件的事件,父元件也可以直接在子元件的自定義標籤上使用v-on來監聽

非父子元件通訊

在vue.js 1.x中,提供$dispatch()和$broadcast()兩個方法。$dispatch()用於向上級派發事件,只要是它的父級(一級或多級以上),都可以在vue例項的events選項內接收.$broadcast()由上級向下級廣播事件。

但在vue.js 2.x中都廢棄了(不能解決兄弟元件通訊問題)

在vue.js 2.x中,推薦使用乙個空的vue例項作為**事件匯流排(bus),也就是乙個中介

這種方法實現了任何元件間的通訊,如果深入使用,可以擴充套件bus例項,給它新增data、computed、methods等選項,這些都是可以公用的

除了bus外,還有兩種方法可以實現元件間通訊,父鏈和子元件索引

父鏈

在子元件中,使用this.$parent可以直接訪問該元件的父例項或元件,父元件也可以通過this.$children訪問它所有的子元件

父子元件最好還是通過props和$emit來通訊

子元件索引

ps:參考vue.js實戰

Vue自定義元件 簡單實現乙個自定義元件

在用vue構建專案的過程中,我們有時會用到別人開發的元件如vue router 使用他人元件的正常步驟如下 1 命令列進行安裝,執行install 2 在vue專案中的入口檔案main.js中,進行匯入 3 然後用vue.use plugin 引入該元件。我們也可以創造屬於自己的元件,具體步驟如下 ...

Vue自定義元件 簡單實現乙個自定義元件

在用vue構建專案的過程中,我們有時會用到別人開發的元件如vue router 使用他人元件的正常步驟如下 1 命令列進行安裝,執行install 2 在vue專案中的入口檔案main.js中,進行匯入 3 然後用vue.use plugin 引入該元件。我們也可以創造屬於自己的元件,具體步驟如下 ...

實現乙個自定義元件

如果要建立乙個自定義元件,你需要重寫uicomponent類的某些方法,最少需要重寫如下方法 建構函式,createchildren commitproperties measure layoutchrome updatedisplaylist 基礎語句結構如下 package mycomponen...