浅谈vue中$bus的使用和涉及到的问题


Posted in Javascript onJuly 28, 2020

Hello大家周末好,最近项目比较忙所以没有及时的更新抱歉,今天给大家讲一vue.bus。使用过的都知道$bus是兄弟之间相互传值的项目中说实话用的地方不算多但是也会用到(每一个领域都是会有坑的呀)。

1:创建$bus文件

创建一个文件内容如下:

import Vue from 'vue'

export default new Vue();

2:引入$bus

main.js: import Bus from './views/bus/bus';

Vue.prototype.$bus = Bus; //注意这里的Vue是我上面引入的vue import Vue from 'vue'

3:使用传值

this.$bus.$emit("vaPage",value); //很像父子之间传值的方法

4:接收

this.$bus.$on("vaPage", v =>{ //vaPage传的时候的key是什么接收就必须是什么
  console.log(v); //v是传来的值,可以接收多个参数
 })

5:填坑之路

大家假设一下一个场景现在有3个组件分别是A(父组件),B(子组件),C(子组件)

这时候B,C之间的通信就可以用$bus了,比如我在B中进行了操作然后要刷新自己和C组件的dom咱们就可以通过this.$bus.$emit(key,value); 然后C接受this.$bus.$on("key",v=>{});可以在这个组件调用方法什么的你在这里调用方法的时候会发现我只写了一次调用初始化的函数为啥会调用多少而且不刷新页面的时候越来越多,这是需要使用到咱们的生命周期函数beforDestroy在当前组件销毁的时候注销这个$bus的方法:beforDestroy(){this.$bus.$off("val")//关闭$Bus}.

6:总结

使用$bus的时候在接受bus的组件中别忘了再beforDestroy函数中销毁bus,不销毁的话会一直叠加的调用这个方法:

beforDestroy(){
   this.$bus.$off("vaPage"); //当这个组件销毁的时候bus也跟着一起销毁
  }

补充知识:vue-bus中央事件总线(兄弟组件之间传值)

1.作用:

非父子组件(例如兄弟组件)之间传值的方式,可以用vuex,也可以用事件总线,已下是事件总线(vue-bus)的介绍:

2、注册

在main.js中注册

import Vue from 'vue';
import VueBus from 'vue-bus';//中央事件总线
...
Vue.use(VueBus);
...

3、使用

A页面传递给B也页面:

A页面中,触发了一个叫toBPage的事件,并传递了参数'hello world!'

...
methods: {
 toBPage(){
 this.$bus.emit('bPage', 'hello world!');
 },
}
...

B页面中,this.$bus.on监听了bPage并传入了回调函数this.getBPage,该回调函数的参数就是传递过来的数据

created() {
 this.$bus.on('bPage', this.getBPage);
},
methods: {
 getBPage(item){
 console.log(item);//item就是传递过来的数据
 },
}

4.离开该页面时就无需再监听了,所以要销毁该监听事件,this.$bus.off就是销毁该监听事件

beforeDestroy() {
 this.$bus.off('bPage', this.getBPage);
},

以上这篇浅谈vue中$bus的使用和涉及到的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
中国地区三级联动下拉菜单效果分析
Nov 15 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
Apr 19 Javascript
jQuery Easyui实现左右布局
Jan 26 Javascript
Easyui Treegrid改变默认图标的方法
Apr 29 Javascript
浅析创建javascript对象的方法
May 13 Javascript
Bootstrap零基础入门教程(三)
Jul 18 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
Jan 06 Javascript
JavaScript监听手机物理返回键的两种解决方法
Aug 14 Javascript
JavaScript 数组的进化与性能分析
Sep 18 Javascript
Bootstrap 3多级下拉菜单实例
Nov 23 Javascript
微信小程序自定义底部弹出框
Nov 16 Javascript
微信小程序实现原生步骤条
Jul 25 Javascript
js实现全选和全不选功能
Jul 28 #Javascript
JavaScript React如何修改默认端口号方法详解
Jul 28 #Javascript
vue内置组件component--通过is属性动态渲染组件操作
Jul 28 #Javascript
Postman如何实现参数化执行及断言处理
Jul 28 #Javascript
微信小程序实现电子签名功能
Jul 29 #Javascript
Vue的自定义组件不能使用click方法的解决
Jul 28 #Javascript
浅谈JavaScript中this的指向问题
Jul 28 #Javascript
You might like
发一个php简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
PHP超级全局变量数组小结
2012/10/04 PHP
PHP如何利用P3P实现跨域
2013/08/24 PHP
PHP学习笔记(一) 简单了解PHP
2014/08/04 PHP
php常用的url处理函数总结
2014/11/19 PHP
详谈PHP面向对象中常用的关键字和魔术方法
2017/02/04 PHP
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
2010/08/30 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
jsPDF生成pdf后在网页展示实例
2014/01/16 Javascript
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
javascript用函数实现对象的方法
2015/05/14 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
学习Angular中作用域需要注意的坑
2016/08/17 Javascript
js时间比较 js计算时间差的简单实现方法
2016/08/26 Javascript
Web打印解决方案之证件套打的实现思路
2016/08/29 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
js判断是否是手机页面
2017/03/17 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
jQuery实现的简单无刷新评论功能示例
2017/11/08 jQuery
javascript实现考勤日历功能
2018/11/29 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
javascript实现简易数码时钟
2020/03/30 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
Python内建模块struct实例详解
2018/02/02 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
世界上最全面的草药补充剂和顶级品牌维生素网站:HerbsPro
2019/01/20 全球购物
财务会计专业毕业生自荐信
2013/10/02 职场文书
小学三年级数学教学反思
2014/01/31 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android