vue 元件通訊
阿新 • • 發佈:2020-09-06
父元件->子元件:通過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(自定義事件名稱,處理函式)
--