浅谈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 相关文章推荐
script标签属性type与language使用选择
Dec 02 Javascript
js中的this关键字详解
Sep 25 Javascript
jquery插件开发之实现jquery手风琴功能分享
Mar 10 Javascript
理解JavaScript事件对象
Jan 25 Javascript
Svg.js实例教程及使用手册详解(一)
May 16 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
Jul 04 Javascript
简单谈谈gulp-changed插件
Feb 21 Javascript
addEventListener()与removeEventListener()解析
Apr 20 Javascript
Vue-不允许嵌套式的渲染方法
Sep 13 Javascript
支付宝小程序tabbar底部导航
Nov 06 Javascript
使vue实现jQuery调用的两种方法
May 12 jQuery
js前端如何写一个精确的倒计时代码
Oct 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中常用数组处理方法实例分析
2008/08/30 PHP
PHP的范围解析操作符(::)的含义分析说明
2011/07/03 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
2016/03/18 PHP
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
基于Jquery的简单图片切换效果
2011/01/06 Javascript
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
js+xml生成级联下拉框代码
2012/07/24 Javascript
js异步加载的三种解决方案
2013/03/04 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
JavaScript中实现依赖注入的思路分享
2015/01/15 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
JS经典正则表达式笔试题汇总
2016/12/15 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
使用VueCli3+TypeScript+Vuex一步步构建todoList的方法
2019/07/25 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
2019/11/13 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
微信小程序实现聊天室
2020/08/21 Javascript
Python松散正则表达式用法分析
2016/04/29 Python
python实现拓扑排序的基本教程
2018/03/11 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
python 实现倒计时功能(gui界面)
2020/11/11 Python
一文带你了解Python 四种常见基础爬虫方法介绍
2020/12/04 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
深深扎根运动世界的生活品牌:Tillys
2017/10/30 全球购物
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
PyQt 如何创建自定义QWidget
2021/03/24 Python
失业者真诚求职信范文
2013/12/25 职场文书
专家推荐信模板
2014/05/09 职场文书
廉洁家庭事迹材料
2014/05/15 职场文书
实习护士自荐信
2014/06/21 职场文书
2014市国税局对照检查材料思想汇报
2014/09/23 职场文书
2015年元旦主持词开场白
2014/12/14 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js