浅谈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 相关文章推荐
FormValidate 表单验证功能代码更新并提供下载
Aug 23 Javascript
jQuery 核心函数以及jQuery对象
Mar 23 Javascript
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
May 10 Javascript
详解JS 比较两个Json对象的值是否相等的实例
Nov 20 Javascript
Javascript学习笔记之数组的遍历和 length 属性
Nov 23 Javascript
Js+php实现异步拖拽上传文件
Jun 23 Javascript
基于javascript实现泡泡大冒险网页版小游戏
Mar 23 Javascript
JavaScript中文件上传API详解
Apr 01 Javascript
JS实现间歇滚动的运动效果实例
Dec 22 Javascript
js实现登录框鼠标拖拽效果
Mar 09 Javascript
强大的JavaScript响应式图表Chartist.js的使用
Sep 13 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
Jun 01 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 开源框架22个简单简介
2009/08/24 PHP
php 仿Comsenz安装效果代码打包提供下载
2010/05/09 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
2014/03/17 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
Extjs入门之动态加载树代码
2010/04/09 Javascript
javascript奇异的arguments分析
2010/10/20 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
2016/05/25 Javascript
微信小程序开发图片拖拽实例详解
2017/05/05 Javascript
JS如何设置元素样式的方法示例
2017/08/28 Javascript
Vue2.0父子组件传递函数的教程详解
2017/10/16 Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
2017/11/22 Javascript
原生JS实现旋转轮播图+文字内容切换效果【附源码】
2018/09/29 Javascript
Three.js实现3D机房效果
2018/12/30 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
Python设置Socket代理及实现远程摄像头控制的例子
2015/11/13 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
详解tensorflow载入数据的三种方式
2018/04/24 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
python中的print()输出
2019/04/12 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
2019/04/15 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
在Django中实现添加user到group并查看
2019/11/18 Python
CSS3 中的@keyframes介绍
2014/09/02 HTML / CSS
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
台湾线上百货零售购物平台:friDay购物
2017/08/18 全球购物
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
英国著名的美容护肤和护发产品购物网站:Lookfantastic
2020/11/23 全球购物
广告词串烧
2014/03/19 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
数学教师求职信范文
2015/03/20 职场文书
解决Maven项目中 Invalid bound statement 无效的绑定问题
2021/06/15 Java/Android
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL