浅谈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 相关文章推荐
My Desktop :) 桌面式代码
Dec 29 Javascript
在jQuery中 常用的选择器介绍
Apr 16 Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
May 07 Javascript
js实现页面转发功能示例代码
Aug 05 Javascript
jquery parent和parents的区别分析
Oct 02 Javascript
利用jQuery中的ajax分页实现代码
Feb 25 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
Sep 17 Javascript
微信小程序图片横向左右滑动案例
May 19 Javascript
vue-cli中打包图片路径错误的解决方法
Oct 26 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
Aug 03 Javascript
详解ES6数组方法find()、findIndex()的总结
May 12 Javascript
JavaScript中关于预编译、作用域链和闭包的理解
Mar 31 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 select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
PHP 作用域解析运算符(::)
2010/07/27 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
JavaScript下申明对象的几种方法小结
2008/10/02 Javascript
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
node.js中的fs.chown方法使用说明
2014/12/16 Javascript
基于JavaScript实现类似于百度学术高级检索功能
2016/03/02 Javascript
把普通对象转换成json格式的对象的简单实例
2016/07/04 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
vue仿element实现分页器效果
2018/09/13 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
JavaScript this关键字指向常用情况解析
2020/09/02 Javascript
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
Python简单连接MongoDB数据库的方法
2016/03/15 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
Python高级用法总结
2018/05/26 Python
通过PHP与Python代码对比的语法差异详解
2019/07/10 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
Python实现企业微信机器人每天定时发消息实例
2020/02/25 Python
Python的历史与优缺点整理
2020/05/26 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
会计演讲稿范文
2014/05/23 职场文书
幼儿老师求职信
2014/06/30 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
2016年优秀班主任先进事迹材料
2016/02/26 职场文书
我对PyTorch dataloader里的shuffle=True的理解
2021/05/20 Python
MySQL RC事务隔离的实现
2022/03/31 MySQL