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 相关文章推荐
放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
Apr 20 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
Jul 30 Javascript
React+react-dropzone+node.js实现图片上传的示例代码
Aug 23 Javascript
详解Javascript 中的 class、构造函数、工厂函数
Dec 20 Javascript
iphone刘海屏页面适配方法
May 07 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
Sep 29 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
Nov 16 Javascript
JS动态显示倒计时效果
Dec 12 Javascript
原生js实现点击轮播切换图片
Feb 11 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
Aug 04 Javascript
JavaScript实现移动小精灵的案例代码
Dec 12 Javascript
微信小程序学习之自定义滚动弹窗
Dec 20 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中通过smtp发邮件的类,测试通过
2007/01/22 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
PHP实现计算器小功能
2020/08/28 PHP
javascript 避免闭包引发的问题
2009/03/17 Javascript
JavaScript 封装Ajax传递的数据代码
2009/06/05 Javascript
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
微信分享的标题、缩略图、连接及描述设置方法
2014/10/14 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
2016/03/11 Javascript
BootStrap智能表单实战系列(三)分块表单配置详解
2016/06/13 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
JavaScript编写一个简易购物车功能
2016/09/17 Javascript
jQuery事件对象总结
2016/10/17 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
AngularJS的脏检查深入分析
2017/04/22 Javascript
Vue项目webpack打包部署到服务器的实例详解
2017/07/17 Javascript
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
python妹子图简单爬虫实例
2015/07/07 Python
python pandas 对series和dataframe的重置索引reindex方法
2018/06/07 Python
python中import与from方法总结(推荐)
2019/03/21 Python
python里dict变成list实例方法
2019/06/26 Python
Python 画出来六维图
2019/07/26 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
2019/10/18 Python
python 实现朴素贝叶斯算法的示例
2020/09/30 Python
css3实现3D文本悬停改变效果的示例代码
2019/01/16 HTML / CSS
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
德国汉莎航空中国官网: Lufthansa中国
2017/03/30 全球购物
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
美术专业学生个人自我评价
2013/09/19 职场文书
办公室文员自荐书
2014/02/03 职场文书
新课培训心得体会
2014/09/03 职场文书
2014年物流工作总结
2014/11/25 职场文书
爱心捐款感谢信
2015/01/20 职场文书
Django路由层如何获取正确的url
2021/07/15 Python