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 相关文章推荐
javascript 最常用的10个自定义函数[推荐]
Dec 26 Javascript
教您去掉ie网页加载进度条的方法
Dec 09 Javascript
jquery在IE、FF浏览器的差别详细探讨
Apr 28 Javascript
jquery事件与函数的使用介绍
Sep 29 Javascript
js获取下拉列表的值和元素个数示例
May 07 Javascript
JavaScript中的console.trace()函数介绍
Dec 29 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
Dec 13 Javascript
详解微信小程序入门五: wxml文件引用、模版、生命周期
Jan 20 Javascript
Vue中render方法的使用详解
Jan 26 Javascript
Angular4 组件通讯方法大全(推荐)
Jul 12 Javascript
vue-cli 3.x 修改dist路径的方法
Sep 19 Javascript
js实现简易ATM功能
Oct 27 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
通过dbi使用perl连接mysql数据库的方法
2014/04/16 PHP
PHP图片添加水印功能示例小结
2016/10/03 PHP
tp5修改(实现即点即改)
2019/10/18 PHP
火狐浏览器(firefox)下获得Event对象以及keyCode
2008/11/13 Javascript
JS弹出对话框返回值代码(asp.net后台)
2010/12/28 Javascript
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
2012/02/27 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
JS 设置Cookie 有效期 检测cookie
2017/06/15 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
vue.extend与vue.component的区别和联系
2018/09/19 Javascript
在vue项目中优雅的使用SVG的方法实例详解
2018/12/03 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
2019/05/22 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
[00:44]TI7不朽珍藏III——军团指挥官不朽展示
2017/07/15 DOTA
使用优化器来提升Python程序的执行效率的教程
2015/04/02 Python
总结Python中逻辑运算符的使用
2015/05/13 Python
python文字转语音实现过程解析
2019/11/12 Python
Pytorch to(device)用法
2020/01/08 Python
python 实现朴素贝叶斯算法的示例
2020/09/30 Python
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
美国开幕式潮店:Opening Ceremony
2018/02/10 全球购物
如何唤起类中的一个方法
2013/11/29 面试题
产品质量保证书
2014/04/29 职场文书
企业活动策划方案
2014/06/02 职场文书
优质服务口号
2014/06/11 职场文书
教师三严三实学习心得体会
2014/10/11 职场文书
会计岗位职责范本
2015/04/02 职场文书
2015年度学校卫生工作总结
2015/05/12 职场文书
opencv检测动态物体的实现
2021/07/21 Python
SQL Server远程连接的设置步骤(图文)
2022/03/23 SQL Server