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基础知识filter()和find()实例说明
Jul 06 Javascript
php跨域调用json的例子
Nov 13 Javascript
js 判断一组日期是否是连续的简单实例
Jul 11 Javascript
Node.js实现兼容IE789的文件上传进度条
Sep 02 Javascript
前端js实现文件的断点续传 后端PHP文件接收
Oct 14 Javascript
IE8兼容Jquery.validate.js的问题
Dec 01 Javascript
JavaScript Ajax实现异步通信
Dec 14 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
Jun 11 Javascript
微信小程序实现评论功能
Nov 28 Javascript
vue2.0 如何在hash模式下实现微信分享
Jan 22 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
Mar 15 Javascript
json字符串对象转换代码实例
Sep 28 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 验证码制作(网树注释思想)
2009/07/20 PHP
深入php socket的讲解与实例分析
2013/06/13 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
简单的Jquery全选功能
2013/11/07 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
2014/08/27 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
JavaScript中DOM详解
2015/04/13 Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
2016/04/27 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
2016/05/19 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
Angular+Node生成随机数的方法
2017/06/16 Javascript
extjs简介_动力节点Java学院整理
2017/07/17 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
vue3.0中使用element的完整步骤
2021/03/04 Vue.js
win与linux系统中python requests 安装
2016/12/04 Python
Python爬取网页中的图片(搜狗图片)详解
2017/03/23 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
2019/06/19 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
python3.5 cv2 获取视频特定帧生成jpg图片
2019/08/28 Python
Python正则表达式如何匹配中文
2020/05/27 Python
Python matplotlib模块及柱状图用法解析
2020/08/10 Python
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
党支部综合考察材料
2014/05/19 职场文书
班级文化标语
2014/06/23 职场文书
沙滩主题婚礼活动策划方案
2014/09/15 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
英文慰问信
2015/02/14 职场文书
红色经典电影观后感
2015/06/18 职场文书
初中数学教学反思范文
2016/02/17 职场文书
python实现简易自习室座位预约系统
2021/06/30 Python
zabbix自定义监控nginx状态实现过程
2021/11/01 Servers
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL