浅谈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 相关文章推荐
Javascript 验证上传图片大小[客户端]
Aug 01 Javascript
使用基于jquery的gamequery插件做JS乒乓球游戏
Jul 31 Javascript
javascript中的toFixed固定小数位数 简单实例分享
Jul 12 Javascript
AngularJS在IE8的不支持的解决方法
May 13 Javascript
微信小程序开发实战教程之手势解锁
Nov 18 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
Jun 29 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
Aug 26 Javascript
vue调用语音播放的方法
Sep 27 Javascript
JS数据类型STRING使用实例解析
Dec 18 Javascript
JQuery复选框全选效果如何实现
May 08 jQuery
JavaScript面试中常考的字符串操作方法大全(包含ES6)
May 10 Javascript
全面解析JavaScript Module模式
Jul 24 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中根据变量的类型 选择echo或dump
2012/07/05 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
JQuery 浮动导航栏实现代码
2009/08/27 Javascript
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
iframe窗口高度自适应的实现方法
2014/01/08 Javascript
jQuery防止click双击多次提交及传递动态函数或多参数
2014/04/02 Javascript
用js格式化金额可设置保留的小数位数
2014/05/09 Javascript
JavaScript实现找出字符串中第一个不重复的字符
2014/09/03 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
AngularJS路由实现页面跳转实例
2017/03/03 Javascript
简单实现jquery隔行变色
2017/11/09 jQuery
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
2019/09/27 Javascript
python k-近邻算法实例分享
2014/06/11 Python
Python中正则表达式的用法实例汇总
2014/08/18 Python
Django框架中render_to_response()函数的使用方法
2015/07/16 Python
CentOS 6.5中安装Python 3.6.2的方法步骤
2017/12/03 Python
Python星号*与**用法分析
2018/02/02 Python
基于PyQt4和PySide实现输入对话框效果
2019/02/27 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
Python Selenium库的基本使用教程
2021/01/04 Python
幼儿园老师辞职信
2014/01/20 职场文书
大学学习个人的自我评价
2014/02/18 职场文书
公益广告宣传方案
2014/02/28 职场文书
法制报告会主持词
2014/04/02 职场文书
家长写给孩子的评语
2014/04/18 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
教师敬业奉献模范事迹材料
2014/05/18 职场文书
体育课外活动总结
2014/07/08 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书