Vue組件通信

父子組件相互通信

  1. 父?jìng)髯? 父組件在調(diào)用的子組件標(biāo)簽上添加額外屬性,如v-bind:message="msg" 將父組件中的msg屬性傳遞給子組件(如果傳遞死數(shù)據(jù),可以不使用指令)
    子組件通過(guò)props來(lái)接受父組件傳遞的數(shù)據(jù),如props:{'message'}
    子組件接收和父組件傳遞名稱(chēng)必須一樣
  2. 子組件自定義事件,通過(guò)$emit 向父組件傳遞數(shù)據(jù),如 子組件
onClick(){
  this.$emit('showData',{name:'hello'})
}

父組件調(diào)用:

<child @showData = 'show'></child>

methods(){
  show(data){
  this.name = data.name
  }
}

  1. 父組件訪問(wèn)子組件可以使用$children來(lái)獲取一個(gè)包含所有子組件(vueCommponet)的數(shù)組,可以通過(guò)下標(biāo)
    索引來(lái)獲取相對(duì)應(yīng)的子組件的數(shù)據(jù)。
    子組件訪問(wèn)父組件可以使用$parent來(lái)獲取父組件的數(shù)據(jù)(不推薦)
  2. 向子組件添加ref屬性,父組件通過(guò)$refs根據(jù)ref屬性值來(lái)定位子組件,從而獲取子組件的數(shù)據(jù)
    $refs 只會(huì)在組件渲染完成之后生效,并且它們不是響應(yīng)式的。這僅作為一個(gè)用于直接操作子組件的“逃生艙”——你應(yīng)該避免在模板或計(jì)算屬性中訪問(wèn) $refs。

非父子組件通信

1.通過(guò)父組件進(jìn)行通信
2.通過(guò)建立公共倉(cāng)庫(kù)進(jìn)行通信
在所有組件最上層建立一個(gè)中央事件總線(bus)

import Vue from 'vue'
var PublicEvent = new Vue()
export default PublicEvent

如 從組件1調(diào)用組件2 中的方法和數(shù)據(jù)
在組件1和2中都需要引入中央事件總線PublicEvent
在組件2 中,定義一個(gè)事件,通過(guò)該事件觸發(fā)PublicEvent.$emit('名稱(chēng)',需要傳遞的值)

在組件1中,通過(guò)鉤子函數(shù)mounted在初始化組件時(shí)調(diào)用PublicEvent.$on('名稱(chēng)',func)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 父子組件通信 1、父子組件通過(guò)prop傳遞數(shù)據(jù) 父組件可以將一條數(shù)據(jù)傳遞給子組件,這條數(shù)據(jù)可以是動(dòng)態(tài)的,父組件的數(shù)...
    視覺(jué)派Pie閱讀 1,282評(píng)論 0 18
  • 背景 ??Vue是單頁(yè)面應(yīng)用,單頁(yè)面應(yīng)用又是由組件構(gòu)成,各個(gè)組件之間又互相關(guān)聯(lián),那么如何實(shí)現(xiàn)組件之間通信就顯得尤為...
    A鄭家慶閱讀 941評(píng)論 0 1
  • 對(duì)于vue來(lái)說(shuō),組件之間的消息傳遞是非常重要的,下面是我對(duì)組件之間消息傳遞的各種方式的總結(jié),總共有8種方式。 1....
    edc余悸閱讀 371評(píng)論 0 3
  • 能工摹形,巧匠竊意。必三省吾身,萬(wàn)不可怠惰因循。 foreword 這篇容納了我個(gè)人所知道的一些Vue 2.x組件...
    aichisuan閱讀 383評(píng)論 0 1
  • 簡(jiǎn)介 組件是Vue的核心,而組件間的狀態(tài)管理和數(shù)據(jù)傳遞是開(kāi)發(fā)繞不開(kāi)的問(wèn)題。在Vue中,組件和組件之間是相互獨(dú)立的,...
    LeoMelody閱讀 1,723評(píng)論 1 2