Vue实例与兄弟组件间通信:借助事件总线实现数据传递
需积分: 8 178 浏览量
更新于2024-08-06
收藏 2KB MD 举报
"本文主要介绍了如何在Vue框架中实现组件之间的通信,特别是兄弟组件之间的值传递,以及如何利用事件总线(Vue Bus)来完成这一过程。"
在Vue.js中,组件间的通信是非常常见且重要的功能。Vue提供多种方式来进行组件通信,包括props、事件、Vuex状态管理等。对于简单的父子组件通信,我们通常使用props来传递数据,而对于兄弟组件间的数据传递,可以使用自定义事件或者创建一个全局的事件总线(Vue Bus)来实现。本文将重点讲解通过Vue Bus实现兄弟组件传值的方法。
首先,我们需要创建一个独立的Vue实例作为事件总线。在`bus.js`文件中,我们将创建一个新的Vue实例并导出,以便在其他组件中引用:
```javascript
import Vue from 'vue';
var bus = new Vue();
export default bus;
```
然后,在需要通信的兄弟组件中,我们需要分别引入这个总线实例。例如,在`com_1`和`com_2`组件中:
```javascript
import bus from "../modules/bus.js";
```
在`com_1`组件中,我们想要传递数据时,可以通过`bus`实例触发一个自定义事件,并附带要传递的数据:
```javascript
<button @click="sendToCom2">传值到com2</button>
methods: {
sendToCom2() {
bus.$emit('receivecom1', this.comData);
}
}
```
在这里,`$emit`方法用于触发事件,`'receivecom1'`是事件名称,`this.comData`是要传递的数据。
在`com_2`组件中,我们需要监听这个自定义事件。这通常在组件的生命周期钩子`created`中完成,因为这时组件已经实例化,但DOM尚未渲染:
```javascript
created() {
bus.$on("receivecom1", this.handler);
},
```
然后定义一个处理函数来接收数据:
```javascript
methods: {
handler2(d) {
this.receiveCom2Data = d;
}
}
```
这样,当`com_1`组件触发`receivecom1`事件时,`com_2`组件会接收到数据,并将其赋值给`receiveCom2Data`。
总结起来,Vue Bus提供了一种灵活的方式来进行兄弟组件间的通信。这种方式不需要依赖于特定的层级关系,适用于那些没有直接父子关系的组件之间的数据传递。然而,对于更复杂的大型应用,推荐使用Vuex来集中管理状态,以保持应用的可维护性和一致性。
2023-02-05 上传
2021-01-08 上传
2021-01-06 上传
2020-08-28 上传
2021-01-20 上传
2021-01-19 上传
2020-07-26 上传
夕阳落幕已是余温
- 粉丝: 0
- 资源: 1
最新资源
- 高清艺术文字图标资源,PNG和ICO格式免费下载
- mui框架HTML5应用界面组件使用示例教程
- Vue.js开发利器:chrome-vue-devtools插件解析
- 掌握ElectronBrowserJS:打造跨平台电子应用
- 前端导师教程:构建与部署社交证明页面
- Java多线程与线程安全在断点续传中的实现
- 免Root一键卸载安卓预装应用教程
- 易语言实现高级表格滚动条完美控制技巧
- 超声波测距尺的源码实现
- 数据可视化与交互:构建易用的数据界面
- 实现Discourse外聘回复自动标记的简易插件
- 链表的头插法与尾插法实现及长度计算
- Playwright与Typescript及Mocha集成:自动化UI测试实践指南
- 128x128像素线性工具图标下载集合
- 易语言安装包程序增强版:智能导入与重复库过滤
- 利用AJAX与Spotify API在Google地图中探索世界音乐排行榜