浅谈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/vbs/vbscript加密的编码异处理小结
Jun 25 Javascript
JS Array对象入门分析
Oct 30 Javascript
JQuery对表格进行操作的常用技巧总结
Apr 23 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
Mar 04 Javascript
javascript中的altKey 和 Event属性大全
Nov 06 Javascript
使用JQuery实现智能表单验证功能
Mar 08 Javascript
javascript数据结构中栈的应用之符号平衡问题
Apr 11 Javascript
Angularjs2不同组件间的通信实例代码
May 06 Javascript
微信小程序slider组件使用详解
Jan 31 Javascript
vue 开发一个按钮组件的示例代码
Mar 27 Javascript
详解三种方式解决vue中v-html元素中标签样式
Nov 22 Javascript
Vue router配置与使用分析讲解
Dec 24 Vue.js
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新手谈谈我的学习心得
2007/02/25 PHP
php下使用无限生命期Session的方法
2007/03/16 PHP
解析PHP正则提取或替换img标记属性
2013/06/26 PHP
php小技巧之过滤ascii控制字符
2014/05/14 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
执行iframe中的javascript方法
2008/10/07 Javascript
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
javascript string字符串优化问题
2011/07/31 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
分享20个提升网站界面体验的jQuery插件
2014/12/15 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
JavaScript中的对象继承关系
2016/08/01 Javascript
基于jQuery实现的打字机效果
2017/01/16 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
浅谈vue引入css,less遇到的坑和解决方法
2018/01/20 Javascript
Vue设置长时间未操作登录自动到期返回登录页
2020/01/22 Javascript
详解Vue Cli浏览器兼容性实践
2020/06/08 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
2021/01/07 Vue.js
Python之批量创建文件的实例讲解
2018/05/10 Python
Python对接 xray 和微信实现自动告警
2019/09/17 Python
Python如何基于selenium实现自动登录博客园
2019/12/16 Python
Python字典添加,删除,查询等相关操作方法详解
2020/02/07 Python
python实现手势识别的示例(入门)
2020/04/15 Python
美国美妆网站:B-Glowing
2016/10/12 全球购物
高三生物教学反思
2014/01/25 职场文书
《三袋麦子》教学反思
2014/03/02 职场文书
外国人聘用意向书
2014/04/01 职场文书
2014年班组长工作总结
2014/11/20 职场文书
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS
MySQL分库分表详情
2021/09/25 MySQL
Python中递归以及递归遍历目录详解
2021/10/24 Python
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers