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 相关文章推荐
JQuery打造PHP的AJAX表单提交实例
Nov 03 Javascript
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
Jun 14 Javascript
JavaScript中的6种运算符总结
Oct 16 Javascript
javascript简单实现图片预加载
Dec 03 Javascript
js字符串操作方法实例分析
May 06 Javascript
Bootstrap零基础入门教程(二)
Jul 18 Javascript
总结JavaScript的正则与其他语言的不同之处
Aug 25 Javascript
JavaScript之cookie技术详解
Nov 18 Javascript
解决iview打包时UglifyJs报错的问题
Mar 07 Javascript
Js经典案例的实例代码
May 10 Javascript
js中数组常用方法总结(推荐)
Apr 09 Javascript
JavaScript实现下拉列表
Jan 20 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中使用Imagick实现各种图片效果实例
2015/01/21 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
增强的 JavaScript 的 trim 函数的代码
2007/08/13 Javascript
javascript globalStorage类代码
2009/06/04 Javascript
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
Flow之一个新的Javascript静态类型检查器
2015/12/21 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
2016/10/01 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
vue组件之间数据传递的方法实例分析
2019/02/12 Javascript
jquery.pager.js实现分页效果
2019/07/29 jQuery
详解将微信小程序接口Promise化并使用async函数
2019/08/05 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python字符串中查找子串小技巧
2015/04/10 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
2018/01/17 Python
解决Python requests库编码 socks5代理的问题
2018/05/07 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
2018/10/31 Python
python操作文件的参数整理
2019/06/11 Python
Django之form组件自动校验数据实现
2020/01/14 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
Python可变对象与不可变对象原理解析
2020/02/25 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
Python获取android设备cpu和内存占用情况
2020/11/15 Python
html5使用canvas实现弹幕功能示例
2017/09/11 HTML / CSS
大学四年学习的自我评价分享
2013/12/09 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
应届毕业生求职简历自我评价
2015/03/02 职场文书
科技活动总结范文
2015/05/11 职场文书
MySQL 隔离数据列和前缀索引的使用总结
2021/05/14 MySQL
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python