Vue组件通信中非父子组件传值知识点总结


Posted in Javascript onDecember 05, 2019

前言:

如果想要了解非父子关系的组件传值,最好是在了解父传子和子传父的基础上在来了解非父子传值可能会有更透彻的思路。

因为非父子传值是通过定义事件总线来代理实现父传子+子传父从而实现的传值方式。

这是我总结的父子传值相关的知识,可供参考:  https://3water.com/article/121806.htm

然后大概回顾一下父子传值的过程:

Vue组件通信中非父子组件传值知识点总结

根据上述信息可知,如果两个组件需要传递值那么需要这两个组件之间是父子关系才能传递数据。

那么如果有这样一个组件,既可以帮你传递数据,又可以帮你接收数据该多好啊?

于是乎,一个叫事件总线的概念出现了,它就可以帮助实现你想要的这些功能。

了解事件总线之前,需要先看下两个重要的方法。

前置知识: 

1. $emit(event, data)方法

event: 触发的事件类型

data: 触发这个事件时传递的参数

2. $on(event, callBack(data))方法

event: 绑定的事件类型

callBack: 绑定的这个事件所对应的回调函数,其默认的第一个参数data是使用$emit触发这个事件时所传递的参数

在了解了这两个方法后,再来看下面的这张图:

Vue组件通信中非父子组件传值知识点总结

如果还是不太明白,那就转换成代码在分析一下:

首先,定义一个eventBus: 

// eventBus.js 
// 事件总线: 只需要导出一个Vue实例即可
import Vue from 'vue'
export default new Vue()

然后,在A组件中导入eventBus, 并触发自定义的AtoB事件

// A.vue// 导入eventBus
import eventBus from "./eventBus"

// 触发事件并传递参数
eventBus.$emit("AtoB", "Data_A")

最后,在B组件中导入eventBus,并监听自定义的AtoB事件

// B.vue// 导入eventBus
import eventBus from "./eventBus"

// 触发事件并传递参数
eventBus.$on("AtoB", data =>{
  console.log(data); // "Data_A" 
})

总结:

要想了解非父子传值必先了解父子间的传值非父子传值的核心在于通过事件总线作为一个中介然后通过在“传递值”的组件中触发事件总线的某个自定义的事件来传递一个值(如果是多个值,可以传递一个对象) 最后在“接收值”的组件中来监听事件总线中你触发的那个自定义事件来接收数据

以上就是本次介绍的全部相关知识点,感谢大家的学习和对三水点靠木的支持。

Javascript 相关文章推荐
setTimeout与setInterval在不同浏览器下的差异
Jan 24 Javascript
两种简单实现菜单高亮显示的JS类代码
Jun 27 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
Feb 17 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
Aug 23 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
Aug 28 Javascript
jQuery qrcode生成二维码的方法
Apr 03 Javascript
基于jQuery实现仿百度首页选项卡切换效果
May 29 Javascript
Bootstrap基本组件学习笔记之导航(10)
Dec 07 Javascript
使用Bootstrap4 + Vue2实现分页查询的示例代码
Dec 21 Javascript
jQuery实现的导航条点击后高亮显示功能示例
Mar 04 jQuery
javascrit中undefined和null的区别详解
Apr 07 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
May 06 Javascript
基于javascript实现贪吃蛇经典小游戏
Apr 10 #Javascript
微信小程序登录时如何获取input框中的内容
Dec 04 #Javascript
微信小程序日历插件代码实例
Dec 04 #Javascript
微信小程序request请求封装,验签代码实例
Dec 04 #Javascript
vue中使用极验验证码的方法(附demo)
Dec 04 #Javascript
基于vue-cli3创建libs库的实现方法
Dec 04 #Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
Dec 04 #Javascript
You might like
PHP设置图片文件上传大小的具体实现方法
2013/10/11 PHP
PHP中include与require使用方法区别详解
2013/10/19 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
PHP7.0版本备注
2015/07/23 PHP
PHP页面输出搜索后跳转下一页的处理方法
2016/09/30 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
2020/01/23 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
CSDN轮换广告图片轮换效果
2007/03/27 Javascript
js no-repeat写法 背景不重复
2009/03/18 Javascript
javascript工具库代码
2012/03/29 Javascript
javascript引用类型之时间Date和数组Array
2015/08/27 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
JS简单获取日期相差天数的方法
2017/04/24 Javascript
Angular2关于@angular/cli默认端口号配置的问题
2017/07/15 Javascript
详解webpack多页面配置记录
2018/01/22 Javascript
vue实现div拖拽互换位置
2020/07/29 Javascript
jQuery内容选择器与表单选择器实例分析
2019/06/28 jQuery
js获取浏览器地址(获取第1个斜杠后的内容)
2019/09/03 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
node+multer实现图片上传的示例代码
2020/02/18 Javascript
JS实现移动端可折叠导航菜单(现代都市风)
2020/07/07 Javascript
python将txt文档每行内容循环插入数据库的方法
2018/12/28 Python
python语言基本语句用法总结
2019/06/11 Python
Python多版本开发环境管理工具介绍
2019/07/03 Python
Python 面向对象之封装、继承、多态操作实例分析
2019/11/21 Python
Python 写了个新型冠状病毒疫情传播模拟程序
2020/02/14 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
2020/06/05 Python
2014年就业工作总结
2014/11/26 职场文书
建议书范文
2015/02/05 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
我对PyTorch dataloader里的shuffle=True的理解
2021/05/20 Python
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python