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 相关文章推荐
window.js 主要包含了页面的一些操作
Dec 23 Javascript
js导航栏单击事件背景变换示例代码
Jan 13 Javascript
Jquery validation remote 验证的缓存问题解决方法
Mar 25 Javascript
jQuery中document与window以及load与ready 区别详解
Dec 29 Javascript
jQuery插件开发的五种形态小结
Mar 04 Javascript
jQuery实现仿百度帖吧头部固定导航效果
Aug 07 Javascript
jQuery使用$.each遍历json数组的简单实现方法
Apr 18 Javascript
提高Web性能的前端优化技巧总结
Feb 27 Javascript
如何理解jQuery中的ajaxSubmit方法
Mar 13 Javascript
Vue组件实例间的直接访问实现代码
Aug 20 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
Apr 10 Javascript
Vue解析剪切板图片并实现发送功能
Feb 04 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
动态新闻发布的实现及其技巧
2006/10/09 PHP
javascript使用activex控件的代码
2011/01/27 Javascript
dojo学习第二天 ajax异步请求之绑定列表
2011/08/29 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
jQuery easyui datagrid动态查询数据实例讲解
2013/02/26 Javascript
提示$ is not defined错误分析及解决
2013/04/09 Javascript
使用jquery中height()方法获取各种高度大全
2014/04/02 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
js+html5实现可在手机上玩的拼图游戏
2015/07/17 Javascript
浅析JavaScript声明变量
2015/12/21 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
Vue+SpringBoot开发V部落博客管理平台
2017/12/27 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
JS数组Object.keys()方法的使用示例
2019/06/05 Javascript
ES5和ES6中类的区别总结
2020/12/21 Javascript
Python中datetime模块参考手册
2017/01/13 Python
Django自定义分页效果
2017/06/27 Python
django之session与分页(实例讲解)
2017/11/13 Python
Python3中的json模块使用详解
2018/05/05 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
2018/07/09 Python
python绘制热力图heatmap
2020/03/23 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
基于python实现地址和经纬度转换
2020/05/19 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
2020/06/02 Python
Python 发送邮件方法总结
2020/08/10 Python
餐饮业经理竞聘演讲稿
2014/01/14 职场文书
安全目标管理责任书
2014/07/25 职场文书
离婚协议书怎么写
2015/01/26 职场文书
社区工作者个人总结
2015/02/28 职场文书
用人单位聘用意向书
2015/05/11 职场文书