国产女主播成人av-亚洲国产精品黑人久久久-欧美日韩一区二区三区gif-91综合久久噜久久-国产日韩欧美在线观看大片-国产一区二区三区御姐-开心激情婷婷久久视频-亚洲精品日韩在线观看视频网站-亚洲av欧美av日韩av,日本色一区二区三区,国产亚洲成性色av人片在线观,国产91熟女高潮一区二区抖

歡迎來到合肥浪訊網(wǎng)絡(luò)科技有限公司官網(wǎng)
  咨詢服務(wù)熱線:400-099-8848

在Vue中,如何移除定時(shí)器?

發(fā)布時(shí)間:2025-11-02 文章來源:本站  瀏覽次數(shù):370
在 Vue 中移除定時(shí)器的核心是 “在組件卸載前清除定時(shí)器,避免定時(shí)器引用殘留導(dǎo)致內(nèi)存泄漏”,需結(jié)合 Vue 的生命周期鉤子(如onUnmounted、beforeDestroy)和定時(shí)器 ID 的保存來實(shí)現(xiàn)。以下是針對(duì) Vue 3 和 Vue 2 的具體方法及避坑指南:

一、Vue 3(組合式 API):在onUnmounted中清除

Vue 3 的組合式 API 中,需在組件掛載時(shí)創(chuàng)建定時(shí)器并保存其 ID,在組件卸載前(onUnmounted鉤子)通過 ID 清除定時(shí)器。

1. 基礎(chǔ)用法(setInterval周期性定時(shí)器)

vue
<template>
  <div>倒計(jì)時(shí):{{ count }}</div>
</template>

<script setup>
import { onMounted, onUnmounted, ref } from 'vue';

const count = ref(10);
let timer = null; // 保存定時(shí)器ID

onMounted(() => {
  // 創(chuàng)建定時(shí)器,保存ID到timer
  timer = setInterval(() => {
    count.value--;
    if (count.value <= 0) {
      clearInterval(timer); // 提前結(jié)束時(shí)主動(dòng)清除
      timer = null; // 清空ID
    }
  }, 1000);
});

onUnmounted(() => {
  // 組件卸載時(shí)強(qiáng)制清除定時(shí)器(關(guān)鍵步驟)
  if (timer) {
    clearInterval(timer);
    timer = null; // 釋放引用
  }
});
</script>

2. 處理setTimeout延遲定時(shí)器

vue
<template>
  <div>延遲執(zhí)行示例</div>
</template>

<script setup>
import { onMounted, onUnmounted } from 'vue';

let timeout = null; // 保存延遲定時(shí)器ID

onMounted(() => {
  // 2秒后執(zhí)行一次
  timeout = setTimeout(() => {
    console.log('延遲執(zhí)行完成');
    timeout = null; // 執(zhí)行后清空ID
  }, 2000);
});

onUnmounted(() => {
  // 組件卸載時(shí)若定時(shí)器未執(zhí)行,強(qiáng)制清除
  if (timeout) {
    clearTimeout(timeout);
    timeout = null;
  }
});
</script>

3. 動(dòng)態(tài)場景(如按鈕控制定時(shí)器)

若定時(shí)器通過用戶操作(如按鈕點(diǎn)擊)創(chuàng)建,需在組件卸載時(shí)額外檢查并清除:
vue
<template>
  <button @click="startTimer">開始計(jì)時(shí)</button>
</template>

<script setup>
import { onUnmounted, ref } from 'vue';

let timer = null;
const count = ref(0);

const startTimer = () => {
  // 啟動(dòng)前先清除已有定時(shí)器(避免重復(fù)創(chuàng)建)
  if (timer) clearInterval(timer);
  timer = setInterval(() => {
    count.value++;
  }, 1000);
};

onUnmounted(() => {
  if (timer) {
    clearInterval(timer);
    timer = null;
  }
});
</script>

二、Vue 2(選項(xiàng)式 API):在beforeDestroy中清除

Vue 2 的選項(xiàng)式 API 中,定時(shí)器 ID 通常保存在組件實(shí)例(this)上,在beforeDestroy鉤子中清除。

1. 基礎(chǔ)用法

vue
<template>
  <div>計(jì)數(shù)器:{{ count }}</div>
</template>

<script>
export default {
  data() {
    return {
      count: 0,
      timer: null // 保存定時(shí)器ID到組件實(shí)例
    };
  },
  mounted() {
    // 創(chuàng)建定時(shí)器,保存ID
    this.timer = setInterval(() => {
      this.count++;
    }, 1000);
  },
  beforeDestroy() {
    // 組件銷毀前清除定時(shí)器(關(guān)鍵)
    if (this.timer) {
      clearInterval(this.timer);
      this.timer = null; // 釋放引用
    }
  }
};
</script>

2. 處理?xiàng)l件性定時(shí)器(如根據(jù)數(shù)據(jù)動(dòng)態(tài)創(chuàng)建)

vue
<template>
  <div v-if="showTimer">動(dòng)態(tài)定時(shí)器</div>
</template>

<script>
export default {
  data() {
    return {
      showTimer: true,
      timer: null
    };
  },
  methods: {
    startTimer() {
      if (!this.timer) {
        this.timer = setInterval(() => {
          console.log('運(yùn)行中...');
        }, 500);
      }
    }
  },
  mounted() {
    if (this.showTimer) {
      this.startTimer();
    }
  },
  beforeDestroy() {
    // 無論showTimer是否為true,都強(qiáng)制清除
    if (this.timer) {
      clearInterval(this.timer);
    }
  }
};
</script>

三、避坑指南:常見錯(cuò)誤與解決方案

1. 忘記清除定時(shí)器導(dǎo)致組件卸載后仍運(yùn)行

  • 問題:組件已卸載,但定時(shí)器未清除,繼續(xù)執(zhí)行回調(diào)函數(shù)(可能操作已銷毀的 DOM 或響應(yīng)式數(shù)據(jù),導(dǎo)致報(bào)錯(cuò))。
  • 解決方案必須在組件卸載鉤子中清除定時(shí)器,即使定時(shí)器理論上會(huì) “自動(dòng)結(jié)束”(如倒計(jì)時(shí)完成),也需在卸載時(shí)兜底處理。

2. 重復(fù)創(chuàng)建定時(shí)器導(dǎo)致邏輯混亂

  • 問題:多次調(diào)用創(chuàng)建定時(shí)器的方法(如多次點(diǎn)擊 “開始” 按鈕),未清除舊定時(shí)器,導(dǎo)致多個(gè)定時(shí)器同時(shí)運(yùn)行。
  • 解決方案:創(chuàng)建新定時(shí)器前,先檢查并清除已有定時(shí)器:
    javascript
    運(yùn)行
    // 啟動(dòng)定時(shí)器前先清除舊的
    if (timer) clearInterval(timer);
    timer = setInterval(/* ... */);
    

3. 定時(shí)器 ID 未正確保存(如匿名變量)

  • 問題:創(chuàng)建定時(shí)器時(shí)未保存 ID(如setInterval(...)未賦值給變量),導(dǎo)致后續(xù)無法清除。
  • 解決方案:始終將定時(shí)器 ID 保存到變量(Vue 3 用let聲明,Vue 2 用data屬性),確?稍L問。

4. 回調(diào)函數(shù)中使用this指向錯(cuò)誤(Vue 2 常見)

  • 問題:Vue 2 中定時(shí)器回調(diào)用普通函數(shù)時(shí),this指向window而非組件實(shí)例,導(dǎo)致無法訪問datamethods。
  • 解決方案:用箭頭函數(shù)綁定this,或在外部保存組件實(shí)例引用:
    javascript
    運(yùn)行
    // 正確寫法(箭頭函數(shù))
    this.timer = setInterval(() => {
      this.count++; // this指向組件實(shí)例
    }, 1000);
    

總結(jié):Vue 中移除定時(shí)器的核心步驟

  1. 保存定時(shí)器 ID:將setInterval/setTimeout的返回值(ID)保存到變量(Vue 3 用let,Vue 2 用data)。
  2. 在卸載鉤子中清除:Vue 3 在onUnmounted中調(diào)用clearInterval/clearTimeout,Vue 2 在beforeDestroy中處理。
  3. 額外檢查與清理:創(chuàng)建新定時(shí)器前清除舊定時(shí)器,避免重復(fù);執(zhí)行完畢后主動(dòng)清空 ID,減少內(nèi)存占用。
遵循以上步驟,可確保定時(shí)器在組件生命周期內(nèi)正確管理,避免內(nèi)存泄漏和邏輯異常。

上一條:怎么做網(wǎng)絡(luò)營銷商場定位...

下一條:如何在組件卸載時(shí)正確移除...

欧美日韩视频高清一区二区三区-狠狠躁18三区二区一区视频-久久亚洲av日韩av天堂-欧美日韩中文极速播放 | 国产又粗又长又硬又-日韩免费视频1-热re99久久精品国99热-亚洲精品中文字幕调教 | 精品伦精品区一区二区三-91蜜桃精品久久-五十路丰满人妻熟女中文字幕-成年av毛片在线观看免费 | 亚洲成人av夜夜骚-精品伦一区二区三区视频-日韩欧美p片内射在线观看视频-九九99久久精品在免费线 | 久夜色精品国产噜噜亚洲av-久久精品国产亚洲av久按摩-青青久久av操-久久66热人妻偷产精品3d动漫 国产又黄又大又猛的视频-美女国产在线观看视频-国产一区二区三区熟女-久久九九亚洲视频 | 欧美日韩久久综合网-国产女主播在线av-成人午夜人妻一区二区三区视频-精品人妻一区二区三区影片 九九热久久久99国产盗摄蜜臀-91精品一区二区一-超碰人妻福利社-日本久久久夜夜 | 中文字幕在线观看日韩av-亚洲欧洲日本色噜噜-日本久久这里有精品-久久综合久色综合 | 日韩又粗又猛又爽又黄的视频边-日韩 欧美 中文字幕 制服-天天舔天天日天天插-国产又大又长又粗又黄 | 超碰人97在线观看-18禁看黄免费亚洲-伊人色综合久久天天伊人婷-亚洲乱女色熟一区二区三区 | 欧美精品久久久蜜桃-欧美一区二区三区人妻少妇-成人av 在线观看-欧美1区2区在线观看 | 亚洲欧美日韩精品在线免费-欧美人妻中文字幕-91大神免费福利视频-91精品91久久久777 | 69精品少妇一区二区三区蜜桃-久久久亚洲人妻一区-色婷婷人妻av一区二区-色综合久久久久天堂 | 麻豆成人免费在线观看高清视频-国产精品97麻豆cm传媒-久久偷拍厕所视频-欧美日韩亚洲麻豆激情在线 | 精品久久久9999-99热在线精品这里只有精品-暖暖视频一区二区三区-成人中文字幕在线资源 | 国产老熟女xx69-国产 欧美 日韩在线-超碰在线免费观看91-日韩欧美一区2区三区四区五区 | 日本中文字幕v在线-日韩手机午夜av专区-超碰人妻福利20-亚洲天堂熟女av电影 | av一本久久久久久-大屁股熟女少妇一区二区-欧美日韩国产视频网站-国精产品乱码一区一区三区四区 国产99视频精品免视看7-www日韩欧美国产-日韩 欧美一区二区三区在线观看-日韩色美女免费视频 | 婷婷日日夜夜视频-蜜臀在线看一区二区-99久久久久久综合网-中文字幕日韩女性爱 | 欧美日韩成年人大片-丰满少妇一区二区三区丰满人妻-日韩avbd在线观看-亚洲欧美日韩另类一区二区 日韩美一级片视频-免费日韩欧美中文字幕av-婷婷激情四射综合网-日韩爱视频在线观看 | av av com我爱好色-日韩欧美精品色-在线观看91精品视频-久久久久久综合影视 | 91嫩草视频在线看-麻豆丝袜美女在线播放-人妻少妇精品中文字幕av-高清国产一区二区三区 | 成人av中文字幕大全在线观看-日韩成人激情在线免费观看-少妇熟女精品一区二区三区-色婷婷av一区二区三区香蕉 | 成人精品一区二区男人看-亚洲天堂熟女的天堂-9999国产精品欧美久久久久久-精产久久久国品一二三产区区别 | 日本熟女五十路巨尻-日韩视频在线播放一区二区-黄色片黄色片黄色片亚洲黄色片-天堂网2016天堂 | 熟女av亚洲一区二区三区四区五区-熟女中文字幕亚洲-久久久久国产精品夜夜夜夜夜-久久人妻久久人妻一区 | 中文字幕亚洲综合久久天堂av-日韩啊v视频在线播放-亚洲欧美日韩怡红院av在线乱码-日韩一区,国产二区,欧美三区 | 日韩精品中文字幕组-国产精品美女久久久久久久久久-日韩精品熟女中文字幕-伊人色婷婷综合网 | 久久国产东京热精品-亚洲天堂中文在线观看-97超碰熟女人妻-欧美日韩精品卡一卡二 | 99国产精品欲av在线-国产精品欧美久久久久久-久久综合亚洲鲁鲁五月久久-91精品国产乱码久久久久久久久 | 又粗又硬又长又爽的免费视频-色777中文字幕-麻豆久久樱花一区二区av-蜜臀av性久久久久蜜臀av蜜臀 | 久久久这里有精品中文字幕-国产精品高潮呻吟久久久a-亚洲va国产va欧美va精品-国产精品成人自拍在线 | 国产精品麻豆综合在线-伊人久久久久中文字幕-国产精品久久久久久久久av大片-国产欧美日韩一级二级三级 | 99精品国产热久久91蜜凸-91人妻精品久久久久中文字幕-福利网站在线播放一区二区三区-久久6国产精品 | 91av在线资源观看-国产美女黄视频网站-国产欧美日韩在线播放第47页-日韩一区日韩二区日韩三区国产一区 | 五月婷婷丁香六月图片-超碰在线人妻观看-国产一区二区熟女综合-伊人久久大香线蕉av一区 | 91福利美女视频-91久久精品免费视频-欧美人妻少妇一区二区三区-av影片在线观看午夜精品 | 亚洲变态另类av一区二区三区四区-成人区人妻精品一区-97精品人妻一区二-欧美日韩国产一区片 | av天堂亚洲系列第一页-欧美日韩av大片免费观看-成人精品久久久麻豆中文字幕-中文字幕 日韩 二区 超碰caoporn免费-精品人妻一区二区三区蜜桃乌龙-国产一区二区三区御姐-精品久久久久久久久中文字幕 | 精品熟妇熟女一区二区三区-中文字幕乱码在线播放视频-人妻少妇中文字幕在线视频-国产中文字幕av网 | 欧美日韩久久中文字幕-91综合久久久久-麻豆av蜜桃av天美-久久久黑人精品 | 成人首页国产精品亚洲-美日韩av高清不卡免费观看-国产成人精品免费看在线播放-麻豆国产精品无毒视频 |