Vue 元件通訊

2021-08-27 20:52:30 字數 1842 閱讀 4787

一、父子元件間-自定義事件

子元件用$emit()來觸發事件,父元件用$on來監聽子元件的事件。

//父元件**

//父元件函式**

handlegettotal:function(total)

//子元件**

+1//子元件函式**

handleincrease:function()

二、父子元件間-使用v-model

在自定義元件上使用v-model實現雙向繫結。$emit()的事件名是特殊的"input"。

//父元件

-1//父元件函式

handlereduce:function()

//子元件

vue.component('my-component',

}});

父元件通過v-model將total值傳入子元件,子元件通過props中的value接收total值並通過v-bind顯示在input元素中;子元件自定義input事件,將在input元素中輸入的值通過$emit()傳遞給父元件的total。

三、任意元件間-**事件匯流排(bus)

任意元件(包括父子、兄弟、跨級)間的通訊推薦使用乙個空的vue例項作為**事件匯流排(bus),也就是乙個中介。

//html

//js

var bus=new vue();//定義乙個空vue例項作為**事件匯流排

vue.component('component-a',

}}); data:,

mounted:function())

}});

子元件通過$emit()給bus空例項新增了乙個on-message自定義事件,父元件通過bus.$on()監聽這個on-message事件。

四、祖孫元件間-父鏈

在子元件中使用this.$parent可以直接訪問該元件的父例項或元件,父元件也可以通過this.$children訪問它所有的子元件,而且可以遞迴向上或向下無限訪問,直到根例項或最內層的元件。

//html

//js

vue.component('component-a',

}}); data:

});

注意,在業務中子元件應盡量避免依賴父元件的資料,更不該主動修改它的資料,因為這樣使得父子元件緊耦合。父子元件最好還是通過props和$emit()來通訊。

五、父子元件間-子元件索引

當子元件較多時,可以使用子元件索引的方法,即用特殊的屬性ref來為子元件指定乙個索引名稱。

在父元件模板中,子元件標籤上使用ref指定乙個名稱,並在父元件內通過this.$refs來訪問指定名稱的子元件。

//html

通過ref獲取子元件例項

//js

vue.component('component-a',

}}); data:,

methods:

}});

注意,$refs只在元件渲染完成後才填充,並且它是非響應式的。它僅僅作為乙個直接訪問子元件的應急方案,應當避免在木板或計算屬性中使用它。

——閱讀《vue.js實戰》第7章

Vue 元件通訊

單層元件通訊 prop 元件例項的作用域是孤立的。這意味著不能 也不應該 在子元件的模板內直接引用父元件 的資料。父元件的資料需要通過 prop 才能下發到子元件中。子元件要顯式地用 props 選項宣告它預期的資料 vue.component child 然後給他傳乙個訊息 message hel...

vue元件通訊

這部分vue文件已經說的很清楚了,但是為了更好的理解,自己再整理一遍。首先,父元件的與子元件的通訊是通過子元件的props。那麼子元件有資料變化時,想要通知父元件應該怎麼辦呢?父元件可以在使用子元件的地方直接用 v on 來監聽子元件觸發的事件。簡單來說,就是子元件監聽的事件,在函式內使用 emit...

Vue元件通訊

父子級通訊推薦使用 props emit parent children refs attrs listeners 子元件使用props 接收父元件傳遞的值 父元件向子元件傳值 子元件通過 emit 讓父元件接收事件,改變父元件的data裡面的值 子元件向父元件傳值 父元件 子元件 這裡的props...