色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

vue傳值eventbus

李中冰1年前8瀏覽0評論

在Vue中,想要實現(xiàn)兄弟組件之間進行傳值,或者想要跨級組件進行傳值的情況,可以使用eventbus。eventbus就是一個事件總線,可以用來在組件之間進行傳值。具體的實現(xiàn)步驟如下。

首先,在一個單獨的js文件中,定義一個Vue實例,這個實例可以用來進行事件的監(jiān)聽和觸發(fā)。在該實例中,可以使用$on方法來監(jiān)聽事件,$emit方法來觸發(fā)事件。代碼如下:

import Vue from 'vue'
export default new Vue()
//監(jiān)聽事件
eventbus.$on('eventName', (data) =>{
console.log(data)
})
//觸發(fā)事件
eventbus.$emit('eventName', '傳遞的數(shù)據(jù)')

然后,在需要傳值的組件中,可以使用import導入這個eventbus實例,然后在需要傳遞數(shù)據(jù)的地方,使用$emit觸發(fā)事件。具體實現(xiàn)如下:

import eventbus from '@/utils/eventbus.js'
export default {
methods: {
handleClick () {
eventbus.$emit('eventName', '傳遞的數(shù)據(jù)')
}
}
}

在接收數(shù)據(jù)的組件中,需要先導入eventbus實例,然后使用$on來監(jiān)聽事件,在回調(diào)函數(shù)中讀取傳遞過來的數(shù)據(jù)。代碼如下:

import eventbus from '@/utils/eventbus.js'
export default {
data () {
return {
data: ''
}
},
created () {
eventbus.$on('eventName', (data) =>{
this.data = data
console.log(this.data)
})
}
}

值得注意的是,如果一個組件同時監(jiān)聽了多個事件,可以使用$off來取消事件的監(jiān)聽。$off方法有兩個參數(shù),第一個參數(shù)是事件的名稱,第二個參數(shù)是回調(diào)函數(shù)。如果第二個參數(shù)不傳遞,則會取消該事件名稱下的所有回調(diào)函數(shù)。代碼如下:

import eventbus from '@/utils/eventbus.js'
export default {
created () {
//監(jiān)聽事件
eventbus.$on('eventName', this.handleEvent)
//取消事件監(jiān)聽
eventbus.$off('eventName', this.handleEvent)
},
methods: {
handleEvent (data) {
console.log(data)
}
}
}

除了使用eventbus進行傳值外,Vue還提供了其他幾種方法來進行組件之間的傳值,比如props、$emit、provide/inject等。不同的情況下可以選擇不同的方式來實現(xiàn)。需要根據(jù)具體的需求來進行選擇。