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 相关文章推荐
通过ifame指向的页面高度调整iframe的高度
Oct 05 Javascript
js异步加载的三种解决方案
Mar 04 Javascript
JavaScript中使用arguments获得函数传参个数实例
Aug 27 Javascript
JavaScript声明变量名的语法规则
Jul 10 Javascript
Bootstrap实现水平排列的表单
Jul 04 Javascript
JavaScript奇技淫巧44招【实用】
Dec 11 Javascript
Bootstrap源码解读按钮(5)
Dec 23 Javascript
JavaScript获取select中text值的方法
Feb 13 Javascript
浅谈Angular 观察者模式理解
Nov 01 Javascript
layer弹出子iframe层父子页面传值的实现方法
Nov 22 Javascript
这应该是最详细的响应式系统讲解了
Jul 22 Javascript
对layui初始化列表的CheckBox属性详解
Sep 13 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 header()函数使用说明
2008/07/10 PHP
PHP Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
PHP校验ISBN码的函数代码
2011/01/17 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
php在数据库抽象层简单使用PDO的方法
2015/11/03 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
在html页面中包含共享页面的方法
2008/10/24 Javascript
JavaScript获取GridView选择的行内容
2009/04/14 Javascript
基于Jquery制作的幻灯片图集效果打包下载
2011/02/12 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
Chrome扩展页面动态绑定JS事件提示错误
2014/02/11 Javascript
JavaScript中的eval()函数使用介绍
2014/12/31 Javascript
javascript实现动态加载CSS
2015/01/26 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
分享网页检测摇一摇实例代码
2016/01/14 Javascript
JS显示日历和天气的方法
2016/03/01 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
分享一个原生的JavaScript拖动方法
2016/09/25 Javascript
Bootstrap风格的WPF样式
2016/12/07 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
2017/05/11 Javascript
vue百度地图 + 定位的详解
2019/05/13 Javascript
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
在Python中进行自动化单元测试的教程
2015/04/15 Python
windows10系统中安装python3.x+scrapy教程
2016/11/08 Python
python仿抖音表白神器
2019/04/08 Python
详解python调用cmd命令三种方法
2019/07/08 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
python3中利用filter函数输出小于某个数的所有回文数实例
2019/11/24 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
CSS3选择器新增问题的实现
2021/01/21 HTML / CSS
安阳殷墟导游词
2015/02/10 职场文书
大学生军训感言
2015/08/01 职场文书