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 相关文章推荐
extjs grid设置某列背景颜色和字体颜色的实现方法
Sep 06 Javascript
用js控制组织结构图可以任意拖拽到指定位置
Jan 17 Javascript
JavaScript获取页面中第一个锚定文本的方法
Apr 03 Javascript
javascript实现Email邮件显示与删除功能
Nov 21 Javascript
js+canvas简单绘制圆圈的方法
Jan 28 Javascript
JS轮播图中缓动函数的封装
Nov 25 Javascript
JavaScript实现经纬度转换成地址功能
Mar 28 Javascript
React Native预设占位placeholder的使用
Sep 28 Javascript
js获取form表单中name属性的值
Feb 27 Javascript
vue制作抓娃娃机的示例代码
Apr 17 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
Feb 06 Javascript
JS不要再到处使用绝对等于运算符了
Apr 30 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 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
基于PHP magic_quotes_gpc的使用方法详解
2013/06/24 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
PHP时间处理类操作示例
2018/09/05 PHP
Javascript 写的简单进度条控件
2008/01/22 Javascript
js函数中onmousedown和onclick的区别和联系探讨
2013/05/19 Javascript
浅析JavaScript中的delete运算符
2013/11/30 Javascript
Google官方支持的NodeJS访问API,提供后台登录授权
2014/07/29 NodeJs
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
浅析jquery数组删除指定元素的方法:grep()
2016/05/19 Javascript
基于JavaScript实现淘宝商品广告效果
2017/08/10 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
详解angular如何调用HTML字符串的方法
2018/06/30 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
Python程序中使用SQLAlchemy时出现乱码的解决方案
2015/04/24 Python
Python中列表的一些基本操作知识汇总
2015/05/20 Python
Python IDLE入门简介
2017/12/08 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
Python 2/3下处理cjk编码的zip文件的方法
2019/04/26 Python
Tensorflow模型实现预测或识别单张图片
2019/07/19 Python
python 检查数据中是否有缺失值,删除缺失值的方式
2019/12/02 Python
Python操作Word批量生成合同的实现示例
2020/08/28 Python
详解Python利用configparser对配置文件进行读写操作
2020/11/03 Python
matplotlib对象拾取事件处理的实现
2021/01/14 Python
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
芭比波朗加拿大官方网站:Bobbi Brown Cosmetics CA
2020/11/05 全球购物
销售辞职报告范文
2014/01/12 职场文书
校园歌咏比赛主持词
2014/03/18 职场文书
成语的广告词
2014/03/19 职场文书
法定代表人资格证明书
2014/09/11 职场文书
党支部组织生活会整改方案
2014/09/30 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
工作犯错保证书
2015/05/11 职场文书
管辖权异议上诉状
2015/05/23 职场文书
严以修身专题学习研讨会发言材料
2015/11/09 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书