浅谈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 相关文章推荐
限制文本字节数js代码
Mar 06 Javascript
“不能执行已释放的Script代码”错误的原因及解决办法
Sep 09 Javascript
WordPress 照片lightbox效果的运用几点
Jun 22 Javascript
js 对象是否存在判断
Jul 15 Javascript
20款效果非常棒的 jQuery 插件小结分享
Nov 18 Javascript
JavaScript获得url查询参数的方法
Jul 02 Javascript
Vue实现自带的过滤器实例
Mar 09 Javascript
vuex学习之Actions的用法详解
Aug 29 Javascript
.vue文件 加scoped 样式不起作用的解决方法
May 28 Javascript
vue打包的时候自动将px转成rem的操作方法
Jun 20 Javascript
js canvas实现橡皮擦效果
Dec 20 Javascript
使用JQuery自动完成插件Auto Complete详解
Jun 18 jQuery
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
excellent!――ASCII Art(由目标图象生成ascii)
2007/02/20 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
2010/10/22 PHP
PHP读取PDF内容配合Xpdf的使用
2012/11/24 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
2015/12/14 PHP
javascript获取选中的文本的方法代码
2013/10/30 Javascript
javascript得到当前页的来路即前一页地址的方法
2014/02/18 Javascript
JavaScript将数字转换成大写中文的方法
2015/03/23 Javascript
解析Node.js基于模块和包的代码部署方式
2016/02/16 Javascript
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
JS实现无缝循环marquee滚动效果
2017/05/22 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
vue全局组件与局部组件使用方法详解
2018/03/29 Javascript
JavaScript函数apply()和call()用法与异同分析
2018/08/10 Javascript
[50:50]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第一场 12.10
2020/12/13 DOTA
Python的Django框架安装全攻略
2015/07/15 Python
Python简单实现网页内容抓取功能示例
2018/06/07 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
Python线程协作threading.Condition实现过程解析
2020/03/12 Python
浅谈keras 模型用于预测时的注意事项
2020/06/27 Python
python批量生成条形码的示例
2020/10/10 Python
Python远程linux执行命令实现
2020/11/11 Python
Python中Pyspider爬虫框架的基本使用详解
2021/01/27 Python
html5 video全屏播放/自动播放的实现示例
2020/08/06 HTML / CSS
印度尼西亚最好的小工具在线商店:Erafone.com
2019/03/26 全球购物
无工作经验者个人求职信范文
2013/12/22 职场文书
教师试用期自我鉴定
2014/02/12 职场文书
《一本男孩子必读的书》教学反思
2014/02/19 职场文书
材料工程专业毕业生求职信
2014/03/04 职场文书
村干部培训方案
2014/05/02 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
学生上课说话检讨书
2014/10/25 职场文书
教师工作能力自我评价
2015/03/04 职场文书
Python入门之使用pandas分析excel数据
2021/05/12 Python
python数字图像处理之图像的批量处理
2022/06/28 Python