摘要:為此可以使用為子組件指定一個(gè)索引。訪問子組件當(dāng)和一起使用時(shí),是一個(gè)數(shù)組或?qū)ο?,包含相?yīng)的子組件。
父子通信目前有四種方式:
1.父組件傳遞數(shù)據(jù)給子組件
父組件數(shù)據(jù)如何傳遞給子組件呢?可以通過props屬性來實(shí)現(xiàn)
父組件:
data(){ return { msg: [1,2,3] };} //這里必須要用 - 代替駝峰
子組件通過props來接收數(shù)據(jù):
方式1:
props: ["childMsg"]
方式2 :
props: { childMsg: Array //這樣可以指定傳入的類型,如果類型不對(duì),會(huì)警告}
props: { childMsg: { type: Array, default: [0,0,0] //這樣可以指定默認(rèn)的值 }}
這樣呢,就實(shí)現(xiàn)了父組件向子組件傳遞數(shù)據(jù).
2.子組件與父組件通信
那么,如果子組件想要改變數(shù)據(jù)呢?這在vue中是不允許的,因?yàn)関ue只允許單向數(shù)據(jù)傳遞,這時(shí)候我們可以通過觸發(fā)自定義事件來通知父組件改變數(shù)據(jù),從而達(dá)到改變子組件數(shù)據(jù)的目的.
使用 v-on 綁定自定義事件
每個(gè) Vue 實(shí)例都實(shí)現(xiàn)了事件接口(Events interface),即:
使用 $on(eventName) 監(jiān)聽事件
使用 $emit(eventName) 觸發(fā)事件
父組件可以在使用子組件的地方直接用 v-on 來監(jiān)聽子組件觸發(fā)的事件。
子組件:
``
methods: { up() { this.$emit("resultChange","hehe"); //主動(dòng)觸發(fā)resultChange方法,"hehe"為向父組件傳遞的數(shù)據(jù) }}
父組件:
觸發(fā)事件使用駝峰格式的自定義事件名稱,在父組件中就可以使用on-evnet-name的形式來監(jiān)聽。 3.任意組件間通信 如果2個(gè)組件不是父子組件那么如何通信呢?這時(shí)可以通過eventHub來實(shí)現(xiàn)通信. 所謂eventHub就是創(chuàng)建一個(gè)事件中心,相當(dāng)于中轉(zhuǎn)站,可以用它來傳遞事件和接收事件. 使用一個(gè)空的 Vue 實(shí)例作為中央事件總線:
let Hub = new Vue(); //創(chuàng)建事件中心,注意Hub要放在全局
組件1觸發(fā):methods: { eve() { Hub.$emit("change","hehe"); //Hub觸發(fā)事件 }}
組件2接收:created() { Hub.$on("change", () => { //Hub接收事件 this.msg = "hehe"; });}
4. $refs 盡管有 props 和 events ,但是有時(shí)仍然需要在 JavaScript 中直接訪問子組件。為此可以使用 ref 為子組件指定一個(gè)索引 ID 。
當(dāng) ref 和 v-for 一起使用時(shí), ref 是一個(gè)數(shù)組或?qū)ο?,包含相?yīng)的子組件。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/97575.html
摘要:本身提供哪幾種通信方式首先靈感源于,支持雙向綁定,本質(zhì)還是單向數(shù)據(jù)流。跟一樣,組件間最基本的數(shù)據(jù)流是通過向子組件傳遞數(shù)據(jù)。但是在卻很少使用,因?yàn)榻M件可以自定義事件,即后面的組件間通信方式其實(shí)就是訂閱發(fā)布模式。 例子是在 jsrun.net 平臺(tái)編寫,不支持移動(dòng)端平臺(tái),所以本文建議在 PC 端進(jìn)行閱讀。 Vue 是數(shù)據(jù)驅(qū)動(dòng)的視圖框架,那么組件間的數(shù)據(jù)通信是必然的事情,那么組件間如何進(jìn)行數(shù)...
摘要:從過來的都知道,在中,父子組件間事件通信的和被移除了。通過廣播和事件分發(fā)的機(jī)制,就顯得比較混亂了。在父組件中中然后,在子組件中,主要在任意事件回調(diào)中使用來觸發(fā)自定義的事件,后面還可以加上參數(shù)傳給父組件。 從vue1.x過來的都知道,在vue2.0中,父子組件間事件通信的$dispatch和$broadcase被移除了。官方考慮是基于組件樹結(jié)構(gòu)的事件流方式實(shí)在是讓人難以理解,并且在組件結(jié)...
摘要:想使用值的話通過進(jìn)行處理非父子組件間通信創(chuàng)建事件中心組件觸發(fā)組件接收 1. 父組件與子組件通信 父組件showImg(https://segmentfault.com/img/remote/1460000013945460); 子組件通過props來接收數(shù)據(jù): 格式1: props: [childMsg] 格式2 : props: { childMsg: Array //指定...
總結(jié)一下對(duì)vue組件通信的理解和使用。 一、組件目錄結(jié)構(gòu) 父組件:app.vue 子組件:page1.vue 子組件:page2.vue 父組件 app.vue 請(qǐng)輸入單價(jià): import Page1 from ./components/page1; import Page2 from ./components/page2; export de...
閱讀 3262·2021-10-21 17:50
閱讀 3268·2021-10-08 10:05
閱讀 3404·2021-09-22 15:04
閱讀 595·2019-08-30 14:00
閱讀 1970·2019-08-29 17:01
閱讀 1520·2019-08-29 15:16
閱讀 3231·2019-08-26 13:25
閱讀 863·2019-08-26 11:44