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 相关文章推荐
滚动经典最新话题[prototype框架]下编写
Oct 03 Javascript
北京奥运官方网站幻灯切换效果flash版打包下载
Jan 30 Javascript
js 数值项目的格式化函数代码
May 14 Javascript
jquery.ajax之beforeSend方法使用介绍
Dec 08 Javascript
实现非常简单的js双向数据绑定
Nov 06 Javascript
图解Sublime Text3使用技巧
Dec 21 Javascript
AngularJS中的按需加载ocLazyLoad示例
Jan 11 Javascript
支持移动端原生js轮播图
Feb 16 Javascript
vue组件间通信子与父详解(二)
Nov 07 Javascript
JS实现给数组对象排序的方法分析
Jun 24 Javascript
浅谈webpack和webpack-cli模块源码分析
Jan 19 Javascript
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
Jun 09 Vue.js
小程序自定义弹框效果
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
smarty基础之拼接字符串的详解
2013/06/18 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
Javascript面向对象编程(三) 非构造函数的继承
2011/08/28 Javascript
jQuery回车实现登录简单实现
2013/08/20 Javascript
Jquery解析json数据详解
2013/12/26 Javascript
JS动态修改iframe内嵌网页地址的方法
2015/04/01 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
2015/12/11 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
bootstrap弹出层的多种触发方式
2017/05/10 Javascript
Vue通过input筛选数据
2020/10/26 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
原生js实现俄罗斯方块
2020/10/20 Javascript
[03:19]2016国际邀请赛中国区预选赛第四日TOP10镜头集锦
2016/07/01 DOTA
wxPython 入门教程
2008/10/07 Python
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
python使用urllib2提交http post请求的方法
2015/05/26 Python
Python 迭代器与生成器实例详解
2017/05/18 Python
用python与文件进行交互的方法
2018/03/01 Python
解决Mac下使用python的坑
2019/08/13 Python
pytorch梯度剪裁方式
2020/02/04 Python
解释一下钝化(Swap out)
2016/12/26 面试题
标准导师推荐信(医学类)
2013/10/28 职场文书
《蜗牛》教学反思
2014/02/18 职场文书
新教师岗前培训方案
2014/06/05 职场文书
店铺转让协议书
2015/01/29 职场文书
2015年度信用社工作总结
2015/05/04 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
你有一份《诚信考试承诺书》待领取
2019/11/13 职场文书
《LOL》“克隆大作战”久违归来 幻灵战队皮肤上线
2022/04/03 其他游戏