使用EventBus實現兄弟組件之間的通信


使用EventBus實現兄弟組件之間的通信

需求:為了實現菜單折疊的效果,例如http://blog.gdfengshuo.com/example/work/#/dashboard

header組件和sliderbar組件都是main組件下面的子組件,兩者為兄弟關系。

現有下面的思路:

點擊折疊按鈕,觸發事件,讓main組件和sliderbar組件 分別改變各自的樣式。

即:兄弟組件通信

方法

1. 新建bus.js

import Vue from 'vue';

// 使用 Event Bus
const bus = new Vue();

export default bus;

2. header組件觸發事件

header.vue

   <div class="collapse-btn" @click="collapseChage">
            <i class="el-icon-menu"></i>
   </div>

<script>
    import bus from '../common/bus'; // bie忘記引入 我沒有掛載到vue實例上,需要自己引入
    export default {
        data() {
            return {
                collapse: false
            }
        },
        methods:{
            // 側邊欄折疊
            collapseChage(){
                this.collapse = !this.collapse;
                bus.$emit('collapse', this.collapse);
            }
           
        }
    }
</script>
        

3. 在silderbar組建中監聽該事件,and to do something...

<el-menu 
	class="sidebar-el-menu" 
	:default-active="onRoutes" 
	:collapse="collapse" 
	background-color="#324157"
	text-color="#bfcbd9" 
	active-text-color="#20a0ff" 
	unique-opened 
	router>
</el-menu>
<script>
    import bus from '../common/bus'; // bie忘記引入 我沒有掛載到vue實例上,需要自己引入
    export default {
        data() {
            return {
                collapse: false
            }
        },
       created(){
            // 通過 Event Bus 進行組件間通信,來折疊側邊欄
            bus.$on('collapse', msg => {
                this.collapse = msg;
            })
        }
    }
</script>

補充

VUE 爬坑之旅-- eventBus 事件總線的基本使用和重復觸發事件問題的解決

爬坑之旅-- eventBus 事件總線的基本使用和重復觸發事件問題的解決


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM