vue2.0中eventBus实现兄弟组件通讯
我们知道,在vue中父子组件的通讯是通过props和自定义事件搞定的,简单那的非父子组件通讯用bus(一个空的Vue实例),针对中大型的项目会选择vuex,然而小项目的话,便捷的解决方案就是eventBus。
官网相关描述在:$dispatch和$broadcast替换 一节中。提到:
$dispatch 和 $broadcast 也没有解决兄弟组件间的通信问题。对于$dispatch 和 $broadcast最简单的升级方式就是:通过使用事件中心,允许组件自由交流,无论组件处于组件树的哪一层。由于 Vue 实例实现了一个事件分发接口,你可以通过实例化一个空的 Vue 实例来实现这个目的。组件中可以使用$emit,$on,$off分别来分发,监听,取消监听事件。但是对于复杂的情况,更推荐使用一个专门的状态管理层如:Vuex。
主要实现途径是在相互通讯的兄弟组件之中,都引入一个新的Vue实例,然后分别调用这个实例的事件触发和监听来实现通讯和参数传递。
简单的例子:
参考:https://blog.csdn.net/u013034014/article/details/54574989?locationNum=2&fps=1
我这里说个比较简单的:
这里,A.vue是父组件,B.vue,C.vue是兄弟组件。在B中click后,C将点击的DOM打印出来。
给click添加事件:
<div class="click" @click.stop.prevent="doClick($event)"></div>
在公共方法common/js/bus.js里面:
import Vue from 'vue';
export default new Vue();
这里创建了一个新的Vue的实例,接下来在B和C组件里面引入Bus;
然后在B里面进行触发事件:
methods:{
addCars(ev){
Bus.$emit('getTarget',event.target);
}
}
在C组件里面的created()钩子中调用Bus监听这个事件,并接受参数:
created(){
Bus.$on('getTarget',target=>{
console.log(target);
})
}
题外话:vuex是怎么实现的?
参考:https://segmentfault.com/q/1010000007491994
vue2.0中eventBus实现兄弟组件通讯的更多相关文章
- vue2.0s中eventBus实现兄弟组件通信
在vue1.0中,组件之间的通信主要通过vm.$dispatch沿着父链向上传播和用vm.$broadcast向下广播来实现.然而在vue2.0中,已经废除了这种用法. vuex加入后,对组件之间的通 ...
- Vue2.0中的transition组件
组件的过度 Vue1.0中transition做为标签的行内属性被vue支持.但在Vue2.0中.Vue放弃了旧属性的支持并提供了transition组件,transition做为标签被使用. 使用t ...
- Vue最常用的组件通讯有三种:父->子组件通讯、子->父组件通讯,兄弟组件通讯.(template用的pug模板语法)
Vue组件通讯 Vue最常用的组件通讯有三种:父->子组件通讯.子->父组件通讯,兄弟组件通讯.(template用的pug模板语法) 1.父->子组件通讯 父->子组件通 ...
- vue2.0 中#$emit,$on的使用详解
vue1.0中 vm.$dispatch 和 vm.$broadcast 被弃用,改用$emit,$on 1. vm.$on( event, callback ) 监听当前实例上的自定义事件.事件可以 ...
- Vue2.0中的路由配置
Vue2.0较Vue1.0,路由有了较大改变.看一下Vue2.0中的路由如何配置: 步骤一: 在main.js文件中引入相关模块以及组件及实例化vue对象配置选项路由及渲染App组件 默认设置如下: ...
- 使用EventBus实现兄弟组件之间的通信
使用EventBus实现兄弟组件之间的通信 需求:为了实现菜单折叠的效果,例如http://blog.gdfengshuo.com/example/work/#/dashboard header组件和 ...
- vue2.0中router-link详解
vue2.0中router-link详解:https://blog.csdn.net/lhjuejiang/article/details/81082090 在vue2.0中,原来的v-link指令已 ...
- Vue2.0 中,“渐进式框架”和“自底向上增量开发的设计”这两个概念是什么?(转)
https://www.zhihu.com/question/51907207?rf=55052497 徐飞 在我看来,渐进式代表的含义是:主张最少. 每个框架都不可避免会有自己的一些特点,从而会对使 ...
- router-view在vue2.0中不显示,解决方法
学习的router-view路由一直不显示,我翻看vue文档,花费1个小事终于找到原因,希望我的问题能给初学的同学,带来福音,版本不一样,真的烦 在此总结记录,以免以后在此遇到此问题 //配置路由 c ...
随机推荐
- 02-Java开发环境的配置
在本章节中我们将为大家介绍如何搭建Java开发环境. Windows 上安装开发环境 window系统安装java 下载JDK 首先我们需要下载java开发工具包JDK,下载地址:http://www ...
- [LC] 47. Permutations II
Given a collection of numbers that might contain duplicates, return all possible unique permutations ...
- VSTO开发Excel 2013/2016工作簿项目
范例下载:(下载后直接双击扩展名为.vsto的文件,或者双击扩展名为.xlsx的工作簿,按提示操作) ExcelWorkbook_Everything.rar
- elasticsearch用法
基本原理 搜索引擎的索引 倒排序 由value查找key 数据库的索引 由key查找value 用于解决分库分表后的排序分页 like查找 性能问题 日志库的全文搜索 spring集成时使用的不是re ...
- 用JSON报的一个错误java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeExcep
以前在做项目的时候就曾接触过JSON的技术,但那个时候是项目经理把所有该配制的都配了,工具类也提供了,如何使用也跟我们说了,那个时候只是觉得很好用,倒没有研究过. 今天自己写了一个JSON的例子,可以 ...
- 跨域带cookie失效的解决方案
在webpack的tableproxy那儿配置完跨域以后,想给cookie添加domain以便请求的时候带上cookie domain为localhost,cookie不会失效,但是一但改成baidu ...
- Mybatis 入门之resultMap与resultType讲解实例
resultMap:适合使用返回值是自定义实体类的情况 resultType:适合使用返回值得数据类型是非自定义的,即jdk的提供的类型 resultMap : type:映射实体类的数据类型 id: ...
- 对Java tutorial-examples中hello2核心代码分析
1.在hello2中有两个.java源文件分别是GreetingServlet.Java和ResponseServlet.jva文件主要对以下核心代码做主要分析. String username = ...
- Java 笔试面试(6)异常处理
Java 笔试面试(6)异常处理 1. finally的代码何时执行? 问题描述:try{}里有一个return语句,那么在这个try后面的finally{}中的代码是否为执行?如果会,是在retur ...
- kafka&&kafka-manager部署安装
一.zk集群部署 二.kafka部署安装 1.创建kafka用户和日志路径,(直接执行) groupadd kafka useradd -g kafka kafka mkdir -p /web/kaf ...