欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue2.0父子組件及非父子組件之間的通信方法

 更新時間:2017年01月21日 09:49:51   作者:mr_fzz  
這篇文章給大家介紹了vue2.0父子組件及非父子組件之間的通信方法,非常不錯,具有參考借鑒價值,需要的朋友參考下吧

1.父組件傳遞數(shù)據(jù)給子組件

父組件數(shù)據(jù)如何傳遞給子組件呢?可以通過props屬性來實現(xiàn)

父組件:

<parent>
  <child :child-msg="msg"></child>//這里必須要用 - 代替駝峰
</parent>
data(){
  return {
    msg: [1,2,3]
  };
}

子組件通過props來接收數(shù)據(jù):

方式1:

props: ['childMsg']

方式2 :

props: {
  childMsg: Array //這樣可以指定傳入的類型,如果類型不對,會警告
}

方式3:

props: {
  childMsg: {
    type: Array,
    default: [0,0,0] //這樣可以指定默認(rèn)的值
  }
}

這樣呢,就實現(xiàn)了父組件向子組件傳遞數(shù)據(jù).

2.子組件與父組件通信

那么,如果子組件想要改變數(shù)據(jù)呢?這在vue中是不允許的,因為vue只允許單向數(shù)據(jù)傳遞,這時候我們可以通過觸發(fā)事件來通知父組件改變數(shù)據(jù),從而達到改變子組件數(shù)據(jù)的目的.

子組件:

<template>
  <div @click="up"></div>
</template>
methods: {
  up() {
    this.$emit('upup','hehe'); //主動觸發(fā)upup方法,'hehe'為向父組件傳遞的數(shù)據(jù)
  }
}

父組件:

<div>
  <child @upup="change" :msg="msg"></child> //監(jiān)聽子組件觸發(fā)的upup事件,然后調(diào)用change方法
</div>
methods: {
  change(msg) {
    this.msg = msg;
  }
}

3.非父子組件通信

如果2個組件不是父子組件那么如何通信呢?這時可以通過eventHub來實現(xiàn)通信.
所謂eventHub就是創(chuàng)建一個事件中心,相當(dāng)于中轉(zhuǎn)站,可以用它來傳遞事件和接收事件.

let Hub = new Vue(); //創(chuàng)建事件中心

組件1觸發(fā):

<div @click="eve"></div>
methods: {
  eve() {
    Hub.$emit('change','hehe'); //Hub觸發(fā)事件
  }
}

組件2接收:

<div></div>
created() {
  Hub.$on('change', () => { //Hub接收事件
    this.msg = 'hehe';
  });
}

這樣就實現(xiàn)了非父子組件之間的通信了.原理就是把Hub當(dāng)作一個中轉(zhuǎn)站!

以上所述是小編給大家介紹的vue2.0父子組件及非父子組件之間的通信方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評論