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 相关文章推荐
TextArea不支持maxlength的解决办法(jquery)
Sep 13 Javascript
JQuery循环滚动图片代码
Dec 08 Javascript
javascript框架设计读书笔记之模块加载系统
Dec 02 Javascript
jQuery中ajax的load()方法用法实例
Dec 26 Javascript
JavaScript中的console.group()函数详细介绍
Dec 29 Javascript
angularJS结合canvas画图例子
Feb 09 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
Aug 18 jQuery
vue.js将时间戳转化为日期格式的实现代码
Jun 05 Javascript
微信小程序获取当前位置和城市名
Nov 13 Javascript
javascript将扁平的数据转为树形结构的高效率算法
Feb 27 Javascript
分享15个Webpack实用的插件!!!
Mar 31 Javascript
react国际化react-intl的使用
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 __autoload函数(自动载入类文件)的使用方法
2012/02/04 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
关于Mozilla浏览器不支持innerText的解决办法
2011/01/01 Javascript
理解JSON:3分钟课程
2011/10/28 Javascript
JS复制内容到剪切板的实例代码(兼容IE与火狐)
2013/11/19 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
js格式化输入框内金额、银行卡号
2016/02/01 Javascript
详解JavaScript中的事件流和事件处理程序
2016/05/20 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
2016/11/03 Javascript
vue脚手架vue-cli的学习使用教程
2017/06/06 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
Vue 基于 vuedraggable 实现选中、拖拽、排序效果
2020/05/18 Javascript
jquery轮播图插件使用方法详解
2020/07/31 jQuery
Python使用Paramiko模块编写脚本进行远程服务器操作
2016/05/05 Python
python根据list重命名文件夹里的所有文件实例
2018/10/25 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
Linux 修改Python命令的方法示例
2018/12/03 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
Python实现CAN报文转换工具教程
2020/05/05 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
纯CSS3发光分享按钮的实现教程
2014/09/06 HTML / CSS
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
大学生入党思想汇报
2014/01/01 职场文书
应届毕业生求职自荐书
2014/01/03 职场文书
会计电算化个人求职信范文
2014/01/24 职场文书
《普罗米修斯》教学反思
2016/02/22 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书