Vue2.0子组件同级通信:使用事件总线eventBus
107 浏览量
更新于2024-09-01
收藏 231KB PDF 举报
"Vue2.0子同级组件之间数据交互方法主要依赖于事件总线(event bus)实现,通过创建一个新的Vue实例作为通信桥梁。在发送数据的组件中使用$emit触发自定义事件,接收数据的组件则通过$on监听相应事件。这种通信方式适用于同级或非父子关系的组件间通信。"
在Vue2.0中,当两个子组件处于同级且没有直接的父子关系时,它们之间的数据交互通常不通过props直接传递,而是利用事件系统来实现。这里介绍的方法是通过创建一个中央事件总线(event bus),使得组件能够通过事件进行通信。
1. 创建中央事件总线
首先,在项目的`src/assets`目录下创建`eventBus.js`文件,内容为创建一个新的Vue实例,例如:
```javascript
import Vue from 'vue';
export default new Vue();
```
这个新的Vue实例将作为一个全局的对象,用于组件间的通信。
2. 发送数据
在需要发送数据的组件中(例如`firstChild`组件),引入`eventBus`,然后在某个事件(如按钮点击)中使用`$emit`方法触发自定义事件,并传递数据:
```javascript
methods: {
sendMsg() {
this.$eventBus.$emit('userDefinedEvent', '这是要传递的数据');
}
}
```
在这里,`$emit`方法用于触发事件`userDefinedEvent`,并将字符串参数传递给监听该事件的组件。
3. 接收数据
在接收数据的组件(如`secondChild`组件)中,同样引入`eventBus`,并在`mounted`生命周期钩子中使用`$on`方法监听自定义事件:
```javascript
mounted() {
this.$eventBus.$on('userDefinedEvent', (data) => {
console.log('接收到的数据:', data);
// 更新组件状态或者显示数据
});
}
```
`$on`方法用于监听事件`userDefinedEvent`,当事件触发时,回调函数会接收到传递的数据,并进行相应的处理。
4. 在父组件中注册子组件
在父组件(如`App.vue`)中,分别注册`firstChild`和`secondChild`组件,并在模板中插入对应的标签,使它们在页面上呈现。
通过这种方式,两个同级组件就可以实现数据的传递,而无需依赖父组件或使用复杂的Vuex状态管理。然而,这种方法仅适用于简单场景,如果应用变得复杂,推荐使用Vuex来集中管理组件间共享的状态,以保持代码的可维护性和可扩展性。
总结:Vue2.0中,子同级组件间的通信主要通过事件总线(event bus)实现,通过创建一个独立的Vue实例作为通信媒介,组件通过触发和监听自定义事件来传递和接收数据。这种方法简洁易懂,适用于轻量级的数据交互需求。但随着应用规模扩大,考虑使用Vuex等状态管理工具会更合适。
2019-10-30 上传
2022-05-08 上传
点击了解资源详情
2020-10-16 上传
2023-03-26 上传
2020-12-29 上传
2020-08-28 上传
2020-08-28 上传
2020-08-27 上传
weixin_38545485
- 粉丝: 5
- 资源: 983
最新资源
- 探索AVL树算法:以Faculdade Senac Porto Alegre实践为例
- 小学语文教学新工具:创新黑板设计解析
- Minecraft服务器管理新插件ServerForms发布
- MATLAB基因网络模型代码实现及开源分享
- 全方位技术项目源码合集:***报名系统
- Phalcon框架实战案例分析
- MATLAB与Python结合实现短期电力负荷预测的DAT300项目解析
- 市场营销教学专用查询装置设计方案
- 随身WiFi高通210 MS8909设备的Root引导文件破解攻略
- 实现服务器端级联:modella与leveldb适配器的应用
- Oracle Linux安装必备依赖包清单与步骤
- Shyer项目:寻找喜欢的聊天伙伴
- MEAN堆栈入门项目: postings-app
- 在线WPS办公功能全接触及应用示例
- 新型带储订盒订书机设计文档
- VB多媒体教学演示系统源代码及技术项目资源大全