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 相关文章推荐
JavaScript 字符串与数组转换函数[不用split与join]
Dec 13 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
Jul 11 Javascript
AngularJS基础 ng-keypress 指令简单示例
Aug 02 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
Apr 27 Javascript
bootstrap警告框示例代码分享
May 17 Javascript
Angular使用 ng-img-max 调整浏览器中的图片的示例代码
Aug 17 Javascript
Angularjs中date过滤器失效的问题及解决方法
Jul 06 Javascript
jquery实现搜索框功能实例详解
Jul 23 jQuery
vue2.0 下拉框默认标题设置方法
Aug 22 Javascript
解决微信小程序中的滚动穿透问题
Sep 16 Javascript
vue组件内部引入外部js文件的方法
Jan 18 Javascript
代码解析React中setState同步和异步问题
Jun 03 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读取csv文件内容的详解
2013/06/18 PHP
ThinkPHP CURD方法之data方法详解
2014/06/18 PHP
PHP stream_context_create()函数的使用示例
2015/05/12 PHP
浅谈php提交form表单
2015/07/01 PHP
利用PHP如何写APP接口详解
2016/08/23 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
2010/08/30 Javascript
Javascript加载速度慢的解决方案
2014/03/11 Javascript
JavaScript中判断原生函数检查function是否是原生代码
2014/09/09 Javascript
node.js中的fs.renameSync方法使用说明
2014/12/16 Javascript
javascript数组排序汇总
2015/07/07 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
vue component组件使用方法详解
2017/07/14 Javascript
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
2017/09/05 Javascript
JavaScript屏蔽Backspace键的实现代码
2017/11/02 Javascript
浅析vue-router原理
2018/10/19 Javascript
小程序多图列表实现性能优化的方法步骤
2019/05/28 Javascript
如何使用JavaScript实现栈与队列
2019/06/24 Javascript
vue路由跳转传递参数的方式总结
2020/05/10 Javascript
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
python实现随机密码字典生成器示例
2014/04/09 Python
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
python3批量删除豆瓣分组下的好友的实现代码
2016/06/07 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
python监控键盘输入实例代码
2018/02/09 Python
对numpy中的transpose和swapaxes函数详解
2018/08/02 Python
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
python主要用于哪些方向
2020/07/05 Python
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
文明礼仪事迹材料
2014/01/09 职场文书
消防安全责任书
2014/04/14 职场文书
具结保证书
2015/01/17 职场文书
职工培训工作总结
2015/08/10 职场文书
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python