vue bus 使用方法

作用:兄弟之间相互传值

1、在src文件下创建一个bus文件夹,
在文件夹下创建一个index.js
在这里插入图片描述
代码如下

// 三部曲
// 1、引用vue
import Vue from 'vue'
// 2、创建一个名为bus 的空vue
const bus = new Vue()
// 3、导出
export default bus;

在main.js中引用并挂载

import bus from './bus'

Vue.prototype.$bus=bus

传值

this.$bus.$emit("vaPage",value); //很像父子之间传值的方法

接收

   this.$bus.$on("vaPage", v =>{   //vaPage传的时候的key是什么接收就必须是什么
        console.log(v);   //v是传来的值,可以接收多个参数
    })
### Vue3 中使用 `vue-bus` 实现事件总线功能 #### 创建 Vue3 项目并安装依赖 在 Vue3 项目中,可以通过引入第三方库 `vue-happy-bus` 来实现事件总线的功能。此库专门为 Vue3 设计,并支持自动销毁未使用的监听器以减少内存泄漏的风险[^3]。 首先,在项目根目录下运行以下命令来安装所需的包: ```bash npm install vue-happy-bus ``` #### 配置 Vue 应用程序 完成安装后,需将插件注册到 Vue 应用实例中: ```javascript // main.js 或入口文件 import { createApp } from 'vue'; import App from './App.vue'; import HappyBus from 'vue-happy-bus'; const app = createApp(App); app.use(HappyBus); // 注册 vue-happy-bus 插件 app.mount('#app'); ``` 上述代码片段展示了如何初始化 Vue3 并集成 `vue-happy-bus` 插件[^2]。 #### 使用 Event Bus 发布与订阅事件 以下是具体的示例说明如何利用 `vue-happy-bus` 完成组件间通信。 ##### 示例场景:父组件向子组件传递数据并通过事件总线通知另一个兄弟组件更新状态。 ###### 子组件 A (发布者) 子组件负责发送一条消息至全局事件总线上供其他组件接收处理。 ```javascript <template> <button @click="sendMessage">Send Message</button> </template> <script> export default { methods: { sendMessage() { this.$bus.emit('message-event', 'Hello from Component A'); // 发送事件 message-event 和对应的数据 } } }; </script> ``` 此处调用了 `$bus.emit()` 方法广播了一个名为 `'message-event'` 的事件,并附带了一条字符串信息作为参数[^1]。 ###### 子组件 B (订阅者) 该组件会监听来自事件总线的消息,并执行相应的逻辑操作。 ```javascript <template> <div>{{ receivedMessage }}</div> </template> <script> export default { data() { return { receivedMessage: '' }; }, mounted() { this.unsubscribe = this.$bus.on('message-event', (data) => { this.receivedMessage = data; // 接收到来自事件总线的信息并存储起来显示给用户看 }); }, beforeUnmount() { if (this.unsubscribe) { this.unsubscribe(); // 取消订阅以防发生潜在的内存泄露问题 } } }; </script> ``` 这里通过调用 `$bus.on()` 函数绑定特定名称 (`message-event`) 下的一个回调函数用来捕获由其它地方发出的相关信号;当组件即将被卸载之前记得解除关联以免造成不必要的资源浪费或者错误行为出现。 #### 自动清理机制的优势 相比传统方式手动维护生命周期内的订户列表而言,采用像 `vue-happy-bus` 这样的工具能够更加便捷高效地达成相同目的同时还具备额外的安全保障措施——即一旦某个视图离开 DOM 结构之后便会立即停止对其所关心主题的关注从而有效规避可能存在的隐患情况的发生概率大大降低。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值