Vue 事件中央总线

22 篇文章 0 订阅

vue 事件中央总线

在这里插入图片描述

作用: 实现任意组件间的通信

实现的方法: 有以下两种方式

方式1: 全局事件总线
1.在main.js文件中定义

new Vue({
 el: '#app',
 router,
 store,
 render: h => h(App),
 beforeCreate(){
   Vue.prototype.$bus = this
 }
})

2.使用方法

// 传值 (可以在你定义的方法中传值)
this.$bus.$emit('定义名称',)

// 监听数据 (在mounted监听数据)
this.$bus.$on('定义名称' val=>{})

// 销毁(在beforeDestroy销毁)
this.$bus.$off('定义名称')

方式2:
1.在main.js的同级建一个bus.js

import Vue from "vue"
export default new Vue

2.在main.js引入

// 事件中央总线传值
Vue.prototype.bus = new Vue();

3.使用方法

// 1.引入(传值和监听数据部分都需引入bus.js文件)
import Bus from '@bus.js'

// 传值(我是在beforeDestroy中传值的)
Bus.$emit('定义名称',)

// 监听数据 (我在beforeCreate 中监听数据)
Bus.$on('定义名称',val=>{})

//销毁(在监听数据页面的 beforeDestroy 中销毁)
Bus.$off('定义名称')

扩展: 还可以使用消息订阅与发布的方式 实现任意组件间的传值

方法:

// 下载插件 pubsub-js
npm i pubsub-js --save

// 在需要传和监听的页面引入
import pubsub from 'pubsub-js'

// 发布(传值)
pubsub.publish('xxx',)

// 订阅(接收)
this.pubId = pubsub.subscribe('xxx',(msgName,data)=>{
 // 注意 msgName的值为你定义的 xxx  data为你真正传过来的 值
})

// 销毁 (在beforeDestroy)
pubsub.unsubscribe(this.pubId)

📢没了,结束了,是不是很简单呐,如有错误,欢迎留言.如有问题,不吝赐教。
📢如果此篇博文对您有帮助,还请动动小手点赞 👍 收藏 ⭐留言 📝呐~,谢谢 ~ ~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值