非父子組件間通信

上一篇:父子組件間單向數(shù)據(jù)流的解決辦法

非父子組件之間的通信,可以通過一個空的 Vue 實例作為中央事件總線(事件中心),用他來觸發(fā)事件和監(jiān)聽事件。

在這里,如果是工作中的新手看了官網(wǎng)的例子直接上手寫,會有些發(fā)懵。這個作為事件總線空的 Vue 實例我該寫哪里去?因為工作中我們的組件都是互相獨立的,不可能寫一起的,作用域是不同的,所以需要稍作調(diào)整

一、在 main.js 中初始化根 Vue 之前,添加一個 data 對象,內(nèi)寫入一個名為 Event 的空 Vue 對象,也就是中央事件總線
new Vue({
  el: '#app',
  data:{
    Event: new Vue()
  },
  render: h => h(App)
})
二、在各組件中使用 Vue 的實例屬性 $root 來訪問我們當前組件樹的根 Vue 實例,這樣就可以使用

vm.$root.Event 來訪問我們定義的事件發(fā)射器 Event
比如我在 Hello.vue 組件中想發(fā)送數(shù)據(jù)到 Vue.vue 組件中

<template>
    <div class="hello">
        <h3>我是 {{name}} 組件</h3>
        <button @click="send">發(fā)送數(shù)據(jù)到Vue組件中</button>
    </div>
</template>

<script>
export default {
    data(){
        return {
            name: 'Hello'
        }
    },
    methods:{
        send(){
            // 觸發(fā)組件 Hello 中的事件
                           // $emit(事件名,數(shù)據(jù))
            this.$root.Event.$emit('hello',this.name)
        }
    }
}
</script>

Vue.vue 組件中進行接收

<template>
    <div class="Vue">
        <h3>我是 {{name}} 組件</h3>
    </div>
</template>

<script>
export default {
    data(){
        return {
            name: ''
        }
    },
    mounted(){
        // 在組件 Vue 創(chuàng)建的鉤子中監(jiān)聽事件
                        // $on(事件名,數(shù)據(jù))
        this.$root.Event.$on('hello',name => {
            this.name = name
        })
    }
}
</script>

這樣就可以實現(xiàn)數(shù)據(jù)的通信了


非父子組件通信

如果在組件間通信復(fù)雜的情況下,我們應(yīng)該考慮使用專門的 狀態(tài)管理模式 vuex

下一篇:slot 內(nèi)容分發(fā)(組件相互嵌套)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,177評論 0 29
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 1、父子組件通信 查看官方文檔中關(guān)于父子組件的相互通信,其推薦的是父組件中使用 v-on監(jiān)聽子組件上 $emit ...
    葉小七的真命天子閱讀 1,555評論 0 3
  • 得到APP 劉潤專欄文章總結(jié)筆記 -->TOP1概念: 看的見的手(政府):凱恩斯認為,經(jīng)濟也得需要國家調(diào)控這只“...
    瑾蘭閱讀 1,441評論 0 2
  • 前段時間在朋友圈發(fā)了阿德萊德粉色湖泊的照片,引得很多寶寶想前去觀看。而網(wǎng)上關(guān)于粉湖的資料比較少,所以打算寫一篇攻略...
    米婭的旅程閱讀 415評論 0 0

友情鏈接更多精彩內(nèi)容