在前端vue3原生代码中如何实现页面定时轮询
时间: 2024-02-18 18:00:07 浏览: 168
在Vue 3中,你可以使用`watchEffect`来监听数据变化并执行回调函数。结合`setInterval`方法,可以实现定时轮询。下面是一个简单的例子:
```html
<template>
<div>
<p>{{ message }}</p>
</div>
</template>
<script>
import { watchEffect } from 'vue'
export default {
data() {
return {
message: ''
}
},
mounted() {
this.startPolling()
},
methods: {
startPolling() {
setInterval(() => {
this.getData()
}, 5000)
},
getData() {
// 这里写你需要轮询的接口地址
axios.get('/api/data')
.then(response => {
this.message = response.data.message
})
.catch(error => {
console.log(error)
})
}
},
setup() {
watchEffect(() => {
// 这里写你需要监听的数据
this.message
})
}
}
</script>
```
在上述代码中,我们通过`watchEffect`方法来监听数据变化。当`message`属性的值发生变化时,会自动执行回调函数。在`mounted`钩子函数中,我们调用`startPolling`方法来启动定时器,每5秒钟调用一次`getData`方法来获取数据。`getData`方法发送一个GET请求到`/api/data`接口地址,然后将返回的数据赋值给组件的`message`属性。这样,在页面中每5秒钟就会自动更新一次数据。
需要注意的是,在Vue 3中,你需要将`this`关键字从方法中移除,并在`setup`函数中使用`ref`或`reactive`来定义响应式数据。同时,你还需要使用`watchEffect`来监听数据变化。
阅读全文