浅谈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 相关文章推荐
点击弹出层效果&弹出窗口后网页背景变暗效果的实现代码
Feb 10 Javascript
浅谈jQuery事件绑定原理
Jan 02 Javascript
JS长整型精度问题实例分析
Jan 13 Javascript
jQuery使用drag效果实现自由拖拽div
Jun 11 Javascript
javascript控制图片播放的实现代码
Jul 29 Javascript
html5+canvas实现支持触屏的签名插件教程
May 08 Javascript
webpack学习教程之前端性能优化总结
Dec 05 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
Dec 16 Javascript
JS实现标签滚动切换效果
Dec 25 Javascript
详解各版本React路由的跳转的方法
May 10 Javascript
一篇文章带你浅入webpack的DLL优化打包
Feb 20 Javascript
vue使用better-scroll实现滑动以及左右联动
Jun 30 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
改进的IP计数器
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
推荐10个提供免费PHP脚本下载的网站
2014/12/31 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
php下载文件,添加响应头的简单实例
2016/09/22 PHP
PHP children()函数讲解
2019/02/03 PHP
一个报数游戏js版(约瑟夫环问题)
2010/08/05 Javascript
JavaScript Accessor实现说明
2010/12/06 Javascript
jquery如何把数组变为字符串传到服务端并处理
2014/04/30 Javascript
js实现显示当前状态的导航效果代码
2015/08/28 Javascript
Bootstrap每天必学之导航组件
2016/04/25 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
2016/07/18 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
jquery.tableSort.js表格排序插件使用方法详解
2020/08/12 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
node实现登录图片验证码的示例代码
2018/04/20 Javascript
Bootstrap table表格初始化表格数据的方法
2018/07/25 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
深入理解令牌认证机制(token)
2019/08/22 Javascript
Python 面向对象 成员的访问约束
2008/12/23 Python
wxpython 学习笔记 第一天
2009/02/09 Python
Python随手笔记之标准类型内建函数
2015/12/02 Python
一文总结学习Python的14张思维导图
2017/10/17 Python
python去除文件中重复的行实例
2018/06/29 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
一份婚庆公司创业计划书
2014/01/11 职场文书
市场营销方案范文
2014/03/11 职场文书
法人委托书范本
2014/04/04 职场文书
创先争优标语
2014/06/27 职场文书
团队拓展活动方案
2014/08/28 职场文书
教师党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
旷课检讨书范文
2014/10/30 职场文书
Python中npy和mat文件的保存与读取
2022/04/24 Python