用vue中的兄弟组件通信(事件总线),做一个聊天框
时间: 2023-06-07 15:08:16 浏览: 112
好的,关于用Vue中的兄弟组件通信(事件总线)实现一个聊天框,可以这样实现:
1. 定义一个事件总线:
```
// event-bus.js
import Vue from 'vue'
export const EventBus = new Vue()
```
2. 在发送消息的组件中,通过事件总线发送消息:
```
// Sender.vue
<template>
<div>
<input v-model="message" />
<button @click="send">发送</button>
</div>
</template>
<script>
import { EventBus } from '@/event-bus.js'
export default {
data() {
return {
message: ''
}
},
methods: {
send() {
EventBus.$emit('message-sent', this.message)
this.message = ''
}
}
}
</script>
```
3. 在接收消息的组件中,通过事件总线接收消息:
```
// Receiver.vue
<template>
<div>
<div v-for="(message, index) in messages" :key="index">{{ message }}</div>
</div>
</template>
<script>
import { EventBus } from '@/event-bus.js'
export default {
data() {
return {
messages: []
}
},
created() {
EventBus.$on('message-sent', message => {
this.messages.push(message)
})
}
}
</script>
```
以上是一个基本的实现,当然还有很多细节需要处理,比如如何区分不同的聊天对象、如何将消息发送给后台进行存储等等,也完全可以根据具体需求进行优化和修改。
阅读全文