1. 程式人生 > 實用技巧 >vue 元件通訊

vue 元件通訊

父元件->子元件:通過props接受父傳遞資料

步驟1:子通過props鍵來接受父傳遞過來的資料 props:['變數名1',...,'變數名n'] 步驟2:父傳遞給子父必須在呼叫子的元件上通過語法 v-bind:子props中的變數名="父data中的鍵"    留心:props相當於在data中定義變數,因此使用大括號來獲取

子元件->父元件:通過$emit建立自定義事件傳送資料

步驟1:子建立自定義事件通過語法this.$emit(事件名稱,資料1,...,資料n)

 1 // 簡單理解:頁面載入完畢 -> 元件渲染完畢會觸發下面這個鍵
 2     mounted() {  //
相當於window.onload 3 // 在這裡面建立自定義事件 4 this.$emit("getSonData", this.myName2) 5 }, 6 7 //點選給父傳送 定義子普通方法 8 methods:{ 9 getSonData(){ 10 this.$emit("getSonData", this.myName2) 11 } 12 }

步驟2:父呼叫事件獲取資料父必須在呼叫子的元件上觸發事件@自定義事件="函式名"

  父呼叫子的時候 新增事件
1  <子元件  @自定義事件名='父普通方法' >     </子元件> 
1// 宣告父普通函式
2     methods: {
3         showSonDataFn(data) {
4             //data就是 子傳送的資料
5             this.mySonData = data //儲存資料
6         }
7     },

留心1:子什麼時候建立自定義事件

    1.點選的時候     2.mounted函式相當於子元件載入完畢類似window.onload 留心2:底層會將自定義事件中的資料傳遞給函式的形參

兄弟元件:通過EventBus(事件匯流排)

1  const eventBus = new Vue() // 相當於建立一個元件資料共享中心
2  
3 
4  ​傳送資料: eventBus.$emit(自定義事件名稱,資料1,....,資料n)
5  接受資料: eventBus.$on(自定義事件名稱,處理函式)

--