浅谈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 相关文章推荐
基于Jquery的动态添加控件并取值的实现代码
Sep 24 Javascript
jquery 学习之二 属性 文本与值(text,val)
Nov 25 Javascript
jquery ajax提交整个表单元素的快捷办法
Mar 27 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
Jul 18 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
Mar 01 Javascript
AngularJS 如何在控制台进行错误调试
Jun 07 Javascript
JS实现弹出居中的模式窗口示例
Jun 20 Javascript
vue开发调试神器vue-devtools使用详解
Jul 13 Javascript
ES6新增的math,Number方法
Aug 06 Javascript
fetch 使用及如何接收JS传值
Nov 11 Javascript
vue项目中使用ueditor的实例讲解
Mar 05 Javascript
基于jQuery的时间戳与日期间的转化
Jun 21 jQuery
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
玛琪朵 Macchiato
2021/03/03 咖啡文化
php实现mysql事务处理的方法
2014/12/25 PHP
Laravel 5框架学习之路由、控制器和视图简介
2015/04/07 PHP
PHP调试及性能分析工具Xdebug详解
2017/02/09 PHP
PHP实现图片压缩
2020/09/09 PHP
JavaScript中的类继承
2010/11/25 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
2014/11/24 Javascript
JavaScript识别网页关键字并进行描红的方法
2015/11/09 Javascript
javascript中类的定义方式详解(四种方式)
2015/12/22 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
vue 添加vux的代码讲解
2017/11/30 Javascript
vue 本地环境跨域请求proxyTable的方法
2018/09/19 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
vue-resource:jsonp请求百度搜索的接口示例
2019/11/09 Javascript
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
Python3导入自定义模块的三种方法详解
2018/04/13 Python
使用sklearn之LabelEncoder将Label标准化的方法
2018/07/11 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
Python3 元组tuple入门基础
2020/02/09 Python
Django认证系统user对象实现过程解析
2020/03/02 Python
python实现最短路径的实例方法
2020/07/19 Python
Node.js 和 Python之间该选择哪个?
2020/08/05 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
2020/08/26 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
2020/12/14 Python
几个解决兼容IE6\7\8不支持html5标签的几个方法
2013/01/07 HTML / CSS
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
如何配置、使用和清除Smarty缓存
2015/12/23 面试题
2014年食品安全工作总结
2014/12/04 职场文书
入党积极分子考察意见
2015/06/02 职场文书
2019年中,最受大众欢迎的6本新书
2019/08/07 职场文书
pytorch 如何使用batch训练lstm网络
2021/05/28 Python
MySQL深分页问题解决思路
2022/12/24 MySQL