最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue中EventBus的使用教程詳解

 更新時(shí)間:2024年02月03日 09:07:28   作者:還是大劍師蘭特  
在Vue中,使用EventBus可以實(shí)現(xiàn)組件間的通信,如何使用EventBus??都需要做哪些配置呢?他的注意事項(xiàng)是什么呢?下面就跟隨小編一起學(xué)習(xí)一下吧

示例背景

在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ì)象來(lái)創(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提供了一種簡(jiǎn)單的方式來(lái)實(shí)現(xiàn)組件間通信,但過度使用可能會(huì)導(dǎo)致代碼難以維護(hù)。因此,對(duì)于更復(fù)雜的應(yīng)用,建議使用Vuex作為狀態(tài)管理解決方案。

總的來(lái)說,通過以上步驟,可以在Vue項(xiàng)目中使用EventBus來(lái)實(shí)現(xiàn)不同組件之間的通信。

到此這篇關(guān)于vue中EventBus的使用教程詳解的文章就介紹到這了,更多相關(guān)vue EventBus內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

南皮县| 彭泽县| 德庆县| 藁城市| 信阳市| 西贡区| 松滋市| 措美县| 蛟河市| 吉木萨尔县| 呼伦贝尔市| 阳信县| 巍山| 黄大仙区| 波密县| 田林县| 布拖县| 绵竹市| 花莲县| 南开区| 衡水市| 桃江县| 成都市| 舒兰市| 峨山| 白玉县| 平潭县| 昌江| 中超| 横峰县| 沾益县| 和林格尔县| 礼泉县| 长海县| 亳州市| 攀枝花市| 英超| 杨浦区| 岳阳县| 大名县| 恩平市|