vue使用bus进行组件通信

EventBus事件总线

简单使用

全局注册

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

Vue.prototype.$EventBus = new Vue()

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app') 

组件A

created () {
    this.$EventBus.$on('advanced',(data)=>{
      console.log('监听到了',data);
    })
},

组件B

methods: {
	onConfirm () {
      this.$EventBus.$emit("advanced", '来自A页面的消息');
    },
}

也可以单独建个文件bus.js

bus.js

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

组件A

import bus from '@/utils/bus'

created: {
    //第一个参数为标志变量,第二个参数为通信的值
    bus.$emit('message', '来自组件A页面的消息');  
}

组件B

import bus from '@/utils/bus'

created () {
	//第一个参数为标志变量,第二个参数中的e为通信的值
    bus.$on('message', (e) => {
    console.log(e)
})
},
posted @ 2022-03-11 10:19  cx-键盘手  阅读(286)  评论(0编辑  收藏  举报