vue中new bus
时间: 2024-09-21 19:04:56 浏览: 35
浅谈vue中$bus的使用和涉及到的问题
在Vue.js中,Vuex是一个更强大的状态管理模式,但它并不直接提供全局事件总线的概念。如果你想要实现类似的功能,可以自定义一个简单的事件中心(bus),通常使用`EventBus`或者`Vue.mixin`的方式创建一个全局的实例。以下是基本步骤:
1. 定义一个名为`Bus`的空对象或者类:
```javascript
import Vue from 'vue';
const Bus = new Vue();
```
或者,如果是在组件之外创建:
```javascript
export default class GlobalBus {
constructor() {
this.$instance = new Vue();
}
// 添加事件监听和触发
emit(event, data) {
this.$instance.$emit(event, data);
}
on(event, callback) {
this.$instance.$on(event, callback);
}
}
```
2. 如果你想在所有Vue组件中都能访问这个bus,可以在Vue原型上混合(mixins)这个Bus类:
```javascript
Vue.mixin({
beforeCreate() {
if (process.env.NODE_ENV !== 'production') {
const globalBus = new GlobalBus();
this.$bus = globalBus;
}
},
});
```
然后在组件内部你可以通过`this.$bus`来发送和接收事件。
阅读全文