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 相关文章推荐
jquery win 7透明弹出层效果的简单代码
Aug 06 Javascript
Extjs4中Form的使用之本地hiddenfield
Nov 26 Javascript
js charAt的使用示例
Feb 18 Javascript
js实现通用的微信分享组件示例
Mar 10 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
Feb 21 Javascript
浅谈js基本数据类型和typeof
Aug 09 Javascript
node跨域请求方法小结
Aug 25 Javascript
详解PHP后期静态绑定分析与应用
Mar 21 Javascript
vue里input根据value改变背景色的实例
Sep 29 Javascript
Vuex 单状态库与多模块状态库详解
Dec 11 Javascript
vue接口请求加密实例
Aug 11 Javascript
vue.js+element 默认提示中英文操作
Nov 11 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
PHP 的 __FILE__ 常量
2007/01/15 PHP
php5.3 注意事项说明
2013/07/01 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
php动态绑定变量的用法
2015/06/16 PHP
浅谈PHP中foreach/in_array的使用
2015/11/02 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
驱动事件的addEvent.js代码
2007/03/27 Javascript
JS定时器实例
2013/04/17 Javascript
js编写trim()函数及正则表达式的运用
2013/10/24 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
jQuery实现鼠标可拖动调整表格列宽度
2014/05/26 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
2015/07/28 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
jQuery实现图片走马灯效果的原理分析
2016/01/16 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
js事件委托和事件代理案例分享
2017/07/25 Javascript
vuejs使用FormData实现ajax上传图片文件
2017/08/08 Javascript
three.js中文文档学习之通过模块导入
2017/11/20 Javascript
puppeteer实现html截图的示例代码
2019/01/10 Javascript
Django imgareaselect手动剪切头像实现方法
2015/05/26 Python
你应该知道的python列表去重方法
2017/01/17 Python
python实现字符串中字符分类及个数统计
2018/09/28 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
如何在django中运行scrapy框架
2020/04/22 Python
VSCode配合pipenv搞定虚拟环境的实现方法
2020/05/17 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
2013/02/07 HTML / CSS
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
蒙蒂塞罗商店:Monticello Shop
2018/11/25 全球购物
电力安全事故反思
2014/04/27 职场文书
写给同事的离职感言
2015/08/04 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
Redis实现一个账号只能登录一个设备
2022/04/19 Redis