onBeforeUnMounted的使用场景

onBeforeUnMounted的使用场景

以前只是知道有onBeforeUnMounted这样一个生命周期,但是从来没有使用过,代码也没有报过错误偶然间遇到了这个问题,来记录一下

<template>
    <div>
    </div>
</template>

<script setup>
    import { ref,onMounted,onBeforeUnmount } from "vue";
    let num = ref(0);

    // 在created的时候开启一个计时器
    setInterval(() => {
        num.value += 1;
        console.log( num.value );
    }, 1000);

    // 页面加载后跳转到首页
    onMounted(()=>{
        navigateTo("/");
    })

    // 事实上在你跳转到新页面后改计时器仍然会存在    
</script>

这种定时器将会消耗内存,影响用户体验。当然这并不容易发现,假如你在计时器中异步访问DOM,当年跳转到下个页面DOM找不到则会发送错误。
总之VUE中使用定时器计时器一定要,在页面销毁时清除;

<template>
    <div>
    </div>
</template>

<script setup>
    import {
        ref,
        onMounted,
        onBeforeUnmount
    } from "vue";
    let num = ref(0);
    let time = null;
    // 在created的时候开启一个计时器
    time = setInterval(() => {
        num.value += 1;
        console.log(num.value);
    }, 1000);

    // 页面加载后跳转到首页
    onMounted(() => {
        navigateTo("/");
    })

    // 销毁前清除计时器
    onBeforeUnmount(() => {
        clearInterval(time);
    })
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值