vue eventBus Cannot read properties of undefined (reading '$emit')
时间: 2023-12-10 14:34:39 浏览: 227
这个错误通常是因为在使用事件总线时没有正确注册或使用它。请确保在Vue实例中正确注册事件总线,并在组件中使用$emit方法时使用正确的事件名称。以下是一个正确使用事件总线的示例:
```javascript
// main.js
import Vue from 'vue'
export const EventBus = new Vue()
// ComponentA.vue
<template>
<button @click="sendMessage">Send Message</button>
</template>
<script>
import { EventBus } from '@/main.js'
export default {
methods: {
sendMessage() {
EventBus.$emit('message', 'Hello from Component A!')
}
}
}
</script>
// ComponentB.vue
<template>
<div>{{ message }}</div>
</template>
<script>
import { EventBus } from '@/main.js'
export default {
data() {
return {
message: ''
}
},
mounted() {
EventBus.$on('message', message => {
this.message = message
})
}
}
</script>
```
在这个示例中,我们在main.js文件中创建了一个事件总线实例,并在ComponentA.vue组件中使用$emit方法发送一个名为'message'的事件。在ComponentB.vue组件中,我们使用$on方法监听'message'事件,并将接收到的消息存储在组件的data中。请确保在你的代码中正确使用事件总线,并使用正确的事件名称。
阅读全文