vue组件中传值EventBus的使用及注意事项说明


Posted in Javascript onNovember 16, 2020

主要想说下非父子组件之间的通信。

项目场景:

在app.vue里写了一个公共的顶部导航navbar,然后右侧有个分享按钮,而这个分享按钮只有在特定的页面才展示,项目里是在lottery.vue页面,然后想实现app.vue里点击分享按钮,触发lottery.vue里的分享方法。

解决:使用eventBus

1、创建一个event-bus.js

import Vue from 'vue'

export const EventBus = new Vue()

2、在app.vue引入eventbus,点击分享按钮时触发方法

import { EventBus } from '@/tools/event-bus'
 
onClickRight () {
  EventBus.$emit('handleLotteryShare')
}

3、在lottery.vue引入eventBus,在mounted里监听

import { EventBus } from '@/tools/event-bus'
 
mounted () {
  EventBus.$on('handleLotteryShare', () => {
   this.doShare()
  })
 },

4、到此解决了。但是,但是,出bug了,每多点击一次,分享的弹窗的蒙层颜色就更深一层。然后一头雾水,以为是原生app里api的bug,跑去问他们,结果尴尬了,并不是,而是调了多次分享接口。

然后就发现应该跟eventBus有关,上网搜索了下,原来eventBus用完要记得解绑。加上以下代码解决了。

created () {
  // 解绑bus
  EventBus.$off('handleLotteryShare')
}

使用eventBus注意事项:要记得解绑啊!EventBus.$off('handleLotteryShare')。

补充知识:vue前端兄弟组件或任意两个组件之间进行传值可以使用eventbus

具体使用流程如下:

1、定义一个js文件,引入Vue

vue组件中传值EventBus的使用及注意事项说明

2、在需要使用eventbus的组件中引入步骤1创建的js文件

vue组件中传值EventBus的使用及注意事项说明

bus.$emit进行传值

vue组件中传值EventBus的使用及注意事项说明

3、在另一个组件中使用bus.$on进行接收

vue组件中传值EventBus的使用及注意事项说明

其中,msg即为步骤2中emit携带的参数“123”

以上这篇vue组件中传值EventBus的使用及注意事项说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Ruffy javascript 学习笔记
Nov 30 Javascript
Jquery+ajax请求data显示在GridView上(asp.net)
Aug 27 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
Oct 14 Javascript
jQuery中is()方法用法实例
Jan 06 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
Mar 01 Javascript
js实现分享到随页面滚动而滑动效果的方法
Apr 10 Javascript
js过滤HTML标签完整实例
Nov 26 Javascript
javascript函数的节流[throttle]与防抖[debounce]
Nov 15 Javascript
js 将canvas生成图片保存,或直接保存一张图片的实现方法
Jan 02 Javascript
jQuery选择器之基本过滤选择器用法实例分析
Feb 19 jQuery
vue.js中ref及$refs的使用方法解析
Oct 08 Javascript
node.js中module模块的功能理解与用法实例分析
Feb 14 Javascript
小程序自定义弹框效果
Nov 16 #Javascript
vuex中遇到的坑,vuex数据改变,组件中页面不渲染操作
Nov 16 #Javascript
基于Vue+Webpack拆分路由文件实现管理
Nov 16 #Javascript
小程序实现上下切换位置
Nov 16 #Javascript
小程序实现点击tab切换左右滑动
Nov 16 #Javascript
微信小程序实现滚动Tab选项卡
Nov 16 #Javascript
小程序实现tab标签页
Nov 16 #Javascript
You might like
我的论坛源代码(三)
2006/10/09 PHP
php chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
PHP 第二节 数据类型之转换
2012/04/28 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
6种javascript显示当前系统时间代码
2015/12/01 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
2016/06/12 Javascript
jQuery表单验证插件解析(推荐)
2016/07/21 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
微信小程序 wxapp视图容器 view详解
2016/10/31 Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
2016/12/18 Javascript
JS数组返回去重后数据的方法解析
2017/01/03 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
JavaScript 函数的定义-调用、注意事项
2017/04/16 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
2017/08/18 jQuery
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
2020/04/23 Javascript
JS字符串和数组如何实现相互转化
2020/07/02 Javascript
用vue写一个日历
2020/11/02 Javascript
Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
2008/09/06 Python
Python调用C++,通过Pybind11制作Python接口
2018/10/16 Python
python super()函数的基本使用
2020/09/10 Python
匡威英国官网:Converse英国
2018/12/02 全球购物
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
EJB3.1都有哪些改进
2012/11/17 面试题
网络书店创业计划书
2014/02/07 职场文书
《要下雨了》教学反思
2014/02/17 职场文书
联谊活动总结
2014/08/28 职场文书
小学中等生评语
2014/12/29 职场文书
2015年事业单位工作总结
2015/04/27 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
mysql5.7使用binlog 恢复数据的方法
2021/06/03 MySQL
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
2022/03/21 Java/Android
VUE之图片Base64编码使用ElementUI组件上传
2022/04/09 Vue.js