欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

eventbus vue 用法

劉柏宏2年前8瀏覽0評論

相信使用vue.js的開發(fā)者都知道eventbus的存在。它是vue.js提供的事件處理機制,可以讓不同組件之間進行通信。

首先,我們需要先引入eventbus。在main.js中創(chuàng)建一個Vue實例作為eventbus。

import Vue from 'vue'
export const bus = new Vue()

接下來,在需要通信的組件中,用$emit方法觸發(fā)事件,用$on方法監(jiān)聽事件。下面是一個例子:

// 發(fā)送方組件
import { bus } from '@/main'
export default {
methods: {
sendMsg () {
bus.$emit('sendMsg', 'Hello, EventBus!')
}
}
}
// 接收方組件
import { bus } from '@/main'
export default {
data () {
return {
msg: ''
}
},
mounted () {
bus.$on('sendMsg', (msg) =>{
this.msg = msg
})
}
}

在發(fā)送方組件中,我們定義了一個sendMsg方法,用$emit方法觸發(fā)sendMsg事件,并傳遞了一個字符串參數(shù)。在接收方組件中,我們用$on方法監(jiān)聽sendMsg事件,并把傳遞的參數(shù)賦值給data中的msg。

除了基本的事件監(jiān)聽和觸發(fā),eventbus還支持命名空間。如果有多個組件發(fā)送相同的事件,但需要在不同的組件中進行處理,可以用命名空間來區(qū)分。下面是一個命名空間的例子:

// 命名空間為NS1的組件1
import { bus } from '@/main'
export default {
methods: {
sendMsg () {
bus.$emit('NS1/sendMsg', 'Hello, EventBus!')
}
}
}
// 命名空間為NS2的組件2
import { bus } from '@/main'
export default {
data () {
return {
msg: ''
}
},
mounted () {
bus.$on('NS1/sendMsg', (msg) =>{
this.msg = msg
})
}
}

在發(fā)送方組件中,我們在事件名前加上了命名空間“NS1/”,表示這個事件歸屬于NS1命名空間。在接收方組件中,我們用“NS1/sendMsg”作為事件名來監(jiān)聽NS1命名空間下的sendMsg事件。

通過使用eventbus,組件之間的通信變得方便簡單。但是過度使用eventbus可能會導致代碼可讀性降低和調(diào)試困難,要謹慎使用。