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 相关文章推荐
json数据的列循环示例
Sep 06 Javascript
Jquery实现的角色左右选择特效
May 21 Javascript
谈谈我对JavaScript DOM事件的理解
Dec 18 Javascript
jQuery改变form表单的action,并进行提交的实现代码
May 25 Javascript
js实现可旋转的立方体模型
Oct 16 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
Jan 10 Javascript
简单的JS控制button颜色随点击更改的实现方法
Apr 17 Javascript
jQuery事件_动力节点Java学院整理
Jul 05 jQuery
Vue中的methods、watch、computed的区别
Nov 26 Javascript
五分钟搞懂Vuex实用知识(小结)
Aug 12 Javascript
如何基于js判断浏览器版本
Feb 20 Javascript
Node.js API详解之 module模块用法实例分析
May 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与MySQL开发的8个技巧小结
2010/12/17 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
php基于表单密码验证与HTTP验证用法实例
2015/01/06 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
2015/07/08 PHP
Thinkphp实现自动验证和自动完成
2015/12/19 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
js中巧用cssText属性批量操作样式
2011/03/13 Javascript
myEvent.js javascript跨浏览器事件框架
2011/10/24 Javascript
JS性能优化笔记搜索整理
2013/08/21 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
Bootstrap CSS组件之面包屑导航(breadcrumb)
2016/12/17 Javascript
微信小程序的生命周期的详解
2017/10/19 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
Python3.x中自定义比较函数
2015/04/24 Python
解密Python中的描述符(descriptor)
2015/06/03 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
python浪漫表白源码
2019/04/05 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
Django 博客实现简单的全文搜索的示例代码
2020/02/17 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
波兰运动鞋网上商店:e-Sporting
2018/02/16 全球购物
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
档案检查欢迎词
2014/01/13 职场文书
作文批改评语
2014/12/25 职场文书
离婚协议书范本
2015/01/26 职场文书
甲午大海战观后感
2015/06/02 职场文书
python 三边测量定位的实现代码
2021/04/22 Python
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫