在vue的setup中实现一个消息队列用于多个按钮点击时触发显示页面顶部反馈提示的tips并且3秒后消失并且如果同时触发时显示最新消息并且重新计算倒计时
时间: 2024-05-03 22:21:59 浏览: 221
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
5星 · 资源好评率100%
可以通过在setup中使用ref来创建一个消息队列数组,并在每个按钮的点击事件中向队列中添加消息。使用setTimeout函数来实现3秒后隐藏消息。同时,为了实现同时触发时显示最新消息并重新计算倒计时,可以在添加新消息时先清除之前的计时器,然后重新设置计时器。下面是一个示例代码:
```javascript
import { ref } from 'vue'
export default {
setup() {
const messageQueue = ref([])
const showMessage = (message) => {
// 清除之前的计时器
messageQueue.value.forEach((item) => clearTimeout(item.timer))
// 添加新消息
messageQueue.value = [message]
// 设置计时器
message.timer = setTimeout(() => {
// 隐藏消息
message.show = false
// 删除消息
messageQueue.value.splice(messageQueue.value.indexOf(message), 1)
}, 3000)
}
return {
messageQueue,
showMessage
}
}
}
```
在模板中,可以使用v-for指令来遍历消息队列,并根据show属性来控制消息的显示和隐藏:
```html
<template>
<div>
<div v-for="message in messageQueue" :key="message.text" v-if="message.show">
{{ message.text }}
</div>
<button @click="showMessage({ text: '消息1', show: true })">按钮1</button>
<button @click="showMessage({ text: '消息2', show: true })">按钮2</button>
<button @click="showMessage({ text: '消息3', show: true })">按钮3</button>
</div>
</template>
```
阅读全文