VUE2 0父子元件以及非父子元件通訊傳參詳解

2021-08-13 10:04:11 字數 1953 閱讀 5625

父元件資料如何傳遞給子元件呢?可以通過props屬性來實現

父元件:

1

<

parent

>

2<

child

:child-msg

="msg"

>

child

>

//這裡必須要用 - 代替駝峰

3parent

>45

data();

9 }

子元件通過props來接收資料: 

方式1:

1 props: ['childmsg']
方式2 :

1

props:

方式3:

1

props:

6 }

這樣呢,就實現了父元件向子元件傳遞資料.

那麼,如果子元件想要改變資料呢?這在vue中是不允許的,因為vue只允許單向資料傳遞,這時候我們可以通過觸發事件來通知父元件改變資料,從而達到改變子元件資料的目的.

1

子元件:

2<

template

>

3<

div

@click

="up"

>

div>

4template

>56

methods:

10 }

父元件:

1

<

div>

2<

child

@upup

="change"

:msg

="msg"

>

child

>

//監聽子元件觸發的upup事件,然後呼叫change方法

3div

>

4methods:

8 }

如果2個元件不是父子元件那麼如何通訊呢?這時可以通過eventhub來實現通訊. 

所謂eventhub就是建立乙個事件中心,相當於中轉站,可以用它來傳遞事件和接收事件.

1 let hub = new vue(); //建立事件中心
元件1觸發:

1

<

div

@click

="eve"

>

div>

2methods:

6 }

元件2接收:

1

<

div>

div>

2created() );

6 }

這樣就實現了非父子元件之間的通訊了.原理就是把hub當作乙個中轉站!

由於vue2.0 移除了1.0中的$dispatch 和$broadcast 這兩個元件之間通訊傳遞資料的方法 ,官方的給出的最簡單的公升級建議是使用集中的事件處理器,而且也明確說明了 乙個空的vue例項就可以做到,因為vue 例項實現了乙個事件分發介面.

1

new vue(

8 })

好的 這個時候 你就可以一勞永逸了,在任何元件都可以呼叫事件發射 接受的方法了.

如何獲取到這個空的vue物件 eventhub呢.在元件裡面直接呼叫這個

某乙個元件內呼叫事件觸發

1

//通過this.$router.eventhub獲取此物件

2//呼叫$emit 方法

3 this.$router.eventhub.$emit('your_event_name', yourdata)

另乙個元件內呼叫事件接受,當然在元件銷毀時接觸繫結,使用$off方法

1

this.$router.eventhub.$on('your_event_name', (yourdata)=> )

vue2 0父子元件以及非父子元件通訊

官網api 父元件 child message hello child 子元件 vue.component child 結果 hello 父元件 child my message parentmsg child data 子元件 通過props屬性接收資料 方式一props mymessage 方式...

vue2 0父子元件以及非父子元件如何通訊

父元件資料如何傳遞給子元件呢?可以通過props屬性來實現 父元件 parent msg 這裡必須要用 代替駝峰 data 子元件通過props來接收資料 方式1 props childmsg 方式2 props 方式3 props 這樣呢,就實現了父元件向子元件傳遞資料.那麼,如果子元件想要改變資...

vue2 0父子元件以及非父子元件如何通訊

vue2.0父子元件以及非父子元件如何通訊 父元件資料如何傳遞給子元件呢?可以通過props屬性來實現 父元件 這裡必須要用 代替駝峰 data 子元件通過props來接收資料 方式1 props childmsg 方式2 props 方式3 props 這樣呢,就實現了父元件向子元件傳遞資料.那麼...