vue中EventBus的使用教程詳解
示例背景
在Vue中,使用EventBus可以實(shí)現(xiàn)組件間的通信,如何使用EventBus? 都需要做哪些配置呢?他的注意事項(xiàng)是什么呢?請(qǐng)參考以下示例及使用步驟。
示例效果圖

示例源代碼
父組件:
/*
* @Author: 大劍師蘭特(xiaozhuanlan),還是大劍師蘭特(CSDN)
* @此源代碼版權(quán)歸大劍師蘭特所有,可供學(xué)習(xí)或商業(yè)項(xiàng)目中借鑒,未經(jīng)授權(quán),不得重復(fù)地發(fā)表到博客、論壇,問答,git等公共空間或網(wǎng)站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2024-02-03
*/
<template>
<div class="djs-box">
<div class="topBox">
<h3>vue使用EventBus的圖文示例 </h3>
<div>大劍師蘭特, 還是大劍師蘭特,gis-dajianshi</div>
</div>
<div class="dajianshi">
<div class="item">
<ComA></ComA>
</div>
<div class="item">
<ComB></ComB>
</div>
</div>
</div>
</template>
<script>
import ComA from '../components/eventbus/demo-A.vue';
import ComB from '../components/eventbus/demo-B.vue'
export default {
data() {
return {}
},
components:{
ComA,
ComB
},
}
</script>
<style scoped>
.djs-box {
width: 1000px;
height: 650px;
margin: 50px auto;
border: 1px solid peru;
}
.topBox {
margin: 0 auto 0px;
padding: 10px 0 20px;
background: peru;
color: #fff;
}
.dajianshi {
width: 98%;
height: 480px;
margin: 5px auto 0;
display: flex;
justify-content: space-between;
}
.item{
width: 48%;
height: 480px;
margin-top: 20px;
text-align: center;
border: 1px solid #583;
}
</style>子組件A:
<template>
<div>
<h2> 組件A:</h2>
<el-button @click="sendMessage">發(fā)送消息給B</el-button>
<h4> 從B獲取的消息:</h4>
<div style="color: blue;">{{message}}</div>
</div>
</template>
<script>
import {
EventBus
} from '@/eventbus/index.js';
export default {
data() {
return {
message: ''
};
},
mounted() {
EventBus.$on('messageB', (msg) => {
this.message = msg;
});
},
methods: {
sendMessage() {
EventBus.$emit('messageA', 'Hello from Component A');
}
}
}
</script>子組件B:
<template>
<div>
<h2> 組件B:</h2>
<el-button @click="sendMessage">發(fā)送消息給A</el-button>
<h4> 從A獲取的消息:</h4>
<div style="color: red;">{{ message }}</div>
</div>
</template>
<script>
import {
EventBus
} from '@/eventbus/index.js';
export default {
data() {
return {
message: ''
};
},
mounted() {
EventBus.$on('messageA', (msg) => {
this.message = msg;
});
},
methods: {
sendMessage() {
EventBus.$emit('messageB', 'Hello from Component B');
}
}
}
</script>eventbus/index.js:
import Vue from ‘vue’;
export const EventBus = new Vue();
EventBus的基本使用方法
List item初始化EventBus:首先需要?jiǎng)?chuàng)建一個(gè)EventBus實(shí)例??梢酝ㄟ^創(chuàng)建一個(gè)新的.js文件(如event-bus.js),然后導(dǎo)入Vue并實(shí)例化一個(gè)新的Vue對(duì)象來創(chuàng)建EventBus?;蛘撸梢灾苯釉陧?xiàng)目的main.js文件中初始化EventBus。
發(fā)送事件:要向EventBus發(fā)送事件,可以使用e m i t 方 法 。 例 如 , t h i s . emit方法。例如,this.emit方法。例如,this.EventBus.$emit(‘eventName’, payload),其中eventName是事件名,payload是要傳遞的參數(shù)。
監(jiān)聽事件:要在組件中監(jiān)聽EventBus上的事件,可以使用o n 方 法 。 例 如 , t h i s . on方法。例如,this.on方法。例如,this.EventBus.$on(‘eventName’, callback),其中eventName是事件名,callback是處理事件的函數(shù)。
監(jiān)聽:如果需要在組件銷毀時(shí)移除事件監(jiān)聽,可以使用o f f 方 法 。 例 如 , t h i s . off方法。例如,this.off方法。例如,this.EventBus.$off(‘eventName’, callback)。
注意事項(xiàng):雖然EventBus提供了一種簡單的方式來實(shí)現(xiàn)組件間通信,但過度使用可能會(huì)導(dǎo)致代碼難以維護(hù)。因此,對(duì)于更復(fù)雜的應(yīng)用,建議使用Vuex作為狀態(tài)管理解決方案。
總的來說,通過以上步驟,可以在Vue項(xiàng)目中使用EventBus來實(shí)現(xiàn)不同組件之間的通信。
到此這篇關(guān)于vue中EventBus的使用教程詳解的文章就介紹到這了,更多相關(guān)vue EventBus內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue+FormData+axios實(shí)現(xiàn)圖片上傳功能的項(xiàng)目實(shí)戰(zhàn)
本文主要介紹了Vue+FormData+axios實(shí)現(xiàn)圖片上傳功能的項(xiàng)目實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
vue短信驗(yàn)證性能優(yōu)化如何寫入localstorage中
這篇文章主要介紹了vue短信驗(yàn)證性能優(yōu)化寫入localstorage中的方法,解決這個(gè)問題需要把時(shí)間都寫到localstorage里面去,具體解決方法大家參考下本文2018-04-04
vue3中vite.config.js相關(guān)常用配置超詳細(xì)講解
在Vue3項(xiàng)目中vite.config.js文件是Vite構(gòu)建工具的配置文件,它用于定義項(xiàng)目的構(gòu)建和開發(fā)選項(xiàng),這篇文章主要介紹了vue3中vite.config.js相關(guān)常用配置的相關(guān)資料,需要的朋友可以參考下2025-04-04
vue 判斷兩個(gè)時(shí)間插件結(jié)束時(shí)間必選大于開始時(shí)間的代碼
這篇文章主要介紹了vue 判斷兩個(gè)時(shí)間插件結(jié)束時(shí)間必選大于開始時(shí)間的代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11
element table跨分頁多選及回顯的實(shí)現(xiàn)示例
本文主要介紹了element table跨分頁多選及回顯的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
Vue3的vite中圖片動(dòng)態(tài)加載3種方式
這篇文章主要給大家介紹了關(guān)于Vue3的vite中圖片動(dòng)態(tài)加載3種方式的相關(guān)資料,圖片進(jìn)入可視區(qū)域,進(jìn)行動(dòng)態(tài)加載圖片操作,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
element日期組件實(shí)現(xiàn)只能選擇小時(shí)或分鐘
本文主要介紹了element日期組件實(shí)現(xiàn)只能選擇小時(shí)或分鐘,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01

