vue3应用:setup语法糖下的定时器的使用与销毁
vue3应用:setup语法糖下的定时器的使用与销毁。
如果在组件中需要使用定时器,注意在销毁组件的时候,要对定时器进行销毁,否则时间长了会导致页面卡顿。
<script setup>
onMounted(() => {
let timer = null;
//每5s刷新数据
timer = setInterval(() => {
getAmount();
}, 5000);
})
onBeforeUnmount(() => {
clearInterval(timer)
timer = null;
})
</script>
补充:
Vue3 setup语法糖销毁一个或多个定时器(setTimeout或setInterval)
背景
如果在页面/组件增加了定时器,就算跳转到其他页面,定时器也不会被清理,这时候就需要手动清理,不然会有意想不到的bug,也会影响性能。
提示
setTimeout是只执行一次,setInterval是循环执行,以下是用setTimeout举例子,如果想要用setInterval,替换一次方法就行。
setTimeout替换成setInterval
clearTimeout替换成clearInterval
销毁一个定时器
<script setup>
import {onMounted, onUnmounted} from "vue";
//注意哈,这里是个空
const timer = ref()
//先创建一个定时器
onMounted(() => {
timer.value=setTimeout(() => {
// do something
}, 1500)
})
//在页面销毁之前先销毁定时器
onUnmounted(() => {
clearTimeout(timer.value)
timer.value=""
})
销毁多个定时器
<script setup>
import {onMounted, onUnmounted} from "vue";
//注意哈,是个数组,不是对象,当然用对象的方式也行
const timer = ref([])
//先创建数个定时器
onMounted(() => {
timer.value.push(setTimeout(() => {
// do something
}, 1500))
timer.value.push(setTimeout(() => {
// do something
}, 1800))
})
//在页面销毁之前先销毁定时器
onUnmounted(() => {
for (const timerElement of timer.value) {
clearTimeout(timerElement)
}
timer.value=[]
})
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。