国产女主播成人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ù):372
在 Vue 中移除定時(shí)器的核心是 “在組件卸載前清除定時(shí)器,避免定時(shí)器引用殘留導(dǎo)致內(nèi)存泄漏”,需結(jié)合 Vue 的生命周期鉤子(如onUnmountedbeforeDestroy)和定時(shí)器 ID 的保存來實(shí)現(xiàn)。以下是針對 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í)主動清除
      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. 動態(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 = () => {
  // 啟動前先清除已有定時(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ù)動態(tài)創(chuàng)建)

vue
<template>
  <div v-if="showTimer">動態(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í)器理論上會 “自動結(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)行
    // 啟動定時(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í)行完畢后主動清空 ID,減少內(nèi)存占用。
遵循以上步驟,可確保定時(shí)器在組件生命周期內(nèi)正確管理,避免內(nèi)存泄漏和邏輯異常。

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

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

日韩四级大黄片-在线人妻少妇一区二区三区-久久99五月天综合伊人-91狠狠综合久久久 | 日韩高跟丝袜诱惑美腿黄片-美日韩成人xxxaaa视频-日韩人妻ntr-91综合精品国产丝袜长腿久久 | 国产日韩视频一区二区-人人妻人人妻人人人-成人黄色中文字幕电影-99九九视频免费观看 | 日韩欧美一级片一区二区-极品一区二区视频在线观看-成人欧美日韩一区二区-丁香丝袜激情妞 | 另类亚洲欧美麻豆-日韩电影av在线免费观看-国产精品久久久久一级黄片-国产91精品久久久黑人与中国 | 91精品麻豆91夜夜骚-丰满人妻久久久久久久-国产精品久久久呀-国产伦精区二区三区视频 | 欧美日韩三区二区一-一区二区 成人在线-日韩三级电影网一二区-色婷婷午夜免费专区精品视频 | 日韩最新在线观看视频-91人妻中文在线一区二区三区-国模福利视频在线观看-国产精品va尤物在线观看 | 国产伦精一品二品三品app-亚洲人妻av在线电影-日韩av人妻在线-激情人妻文学污污 | 久久综合色777-国产日韩欧美综合一级-日韩精品色哟哟在线播放-日韩国产成人欧美 | 欧美 日韩 高清 看国产-国产高清精品久久久久-久久熟女一区二区-五月婷婷深深爱爱 | 999久久亚洲精品-91福利试看区-特黄特色大片免费看-99久久国产综合精品色 | 国产精品久久久久久久久银杏-92精品一区二区三区-久久久久久久精品一区二区三区-久久热精品18国产 | 人妻av中文字字幕第一-欧美日韩在线黄色-亚洲精品小视频在线-欧美日韩一区二区三区五区 | chinese国产麻豆精品-久久久亚洲欧洲日产国产成人-蜜臀久久久久精品久久久-日韩精品亚洲天堂中文字幕 | 亚洲在线欧美自拍偷拍-日韩美女三级电影网站-欧美日韩国产一区二区三区四匹不卡-2021国产精品自在自线 | 日韩a级视频在线影视-日本精品中文字幕一区-麻豆精品国产91久久久久-婷婷色综合国产精品 | 亚洲精品午夜久久久久久久久久-国产精品高潮呻吟av99-岛国av在线一区二区三区-日本一区二区三区四区在线 | 内射 在线电影-日本精品99一区二区不卡-久久中文字幕乱码一区-人妻丰满熟妇91久久久 | 国内精品久久在线观看-精品中文久久久久久-北条麻妃 av 中文字幕-欧美成人精品人妻久久久久久 | 五月婷婷激情综合少妇-亚洲久久久婷婷-久久久精品人妻一区二区三区蜜桃-久久熟女人妻一区二区 | 99成人在线观看视频-欧美精产国品一区三区-日韩亚洲精品在线-av久久色中文字幕 | 日韩人妻一区二区三区在线88-国产欧美精品第一页-欧美黑人性猛交xxxxx-日韩欧美片免费观看 | 136国产福利精品成av人导航-麻豆精品久久久久蜜桃-久久91精品国产91久久跳舞-欧美三级在线一区二区三区 | 国产中文字幕第一页在线观看-日韩av手机在线看-国产又粗又硬又黄又爽的免费视频-97超碰人操人妻 激情五月婷婷伊人久久综合-妇女人妻丰满少妇中文字幕-julia人妻av一区二区三区-欧美国产综合视频一区二区三区 | 黑人玩弄人妻一区二区三区视频-成人精品在线观看91-久久精品一区二区三区四区五区-成人午夜国产电影在线观看 | 国产一区二区在线观看不卡-日韩av岛国在线观看-91极品尤物在线播放国产-性风俗店中文字幕在线视频 | 久久草视频在线播放-日韩在线亚洲一区-久久精品国产77777蜜臀-最新中文中文字幕 | 国产91成人精品在线观看-av一区二区三区三区-国产一级精品久久久-色午夜久久久久蜜桃 | 成人黄动漫网站在线观看-久久精品人妻综合av_-老色批91久久久久久久久-日韩国产欧美精品 | 国产精品久久久久久色婷婷-精品人妻少妇av一区二区-国产精品中文字幕视频-青青久久美女视频 | 999国内精品视频在线观看-亚洲丰满性熟妇a v-a天堂最新中文在线-日韩黄色在线 中文字幕 | 不卡的日韩一区二区中文字幕在线观看-久久久精品亚洲熟妇少妇-亚洲欧美日韩第十页-777午夜精品久久久 | 国产精品三在线观看-日韩二区少妇视频在线-91中文字幕免费视频-91麻豆欧美成人精品 | 国产99精品自拍视频-精品久久久久久久免费人妻-欧美最猛黑人xx视频-中文字幕国产有码视频 | 国内精品久久在线观看-精品中文久久久久久-北条麻妃 av 中文字幕-欧美成人精品人妻久久久久久 | 美女精品久久久久久久久久久-日本午夜激情插插插-国产成人动漫中文字幕-不卡一卡2卡3卡4卡精品在 | 久久久久久十八禁看-久久精品国产亚洲精品2020-成人综合网站色av-久久99久久久久久久噜噜 | 中文字幕欧美日韩制服在线-精品视频二在线观看-久久国产成人午夜aⅴ影院-国产91精品露脸国语对白 | 中文字幕 日韩精品 人妻-日韩欧美人妻中文字幕在线-久久好看的中文字幕-亚洲国产成人精品女人久久久孕妇 | 人妻少妇精品视频在线中文字幕-国产台湾黄色av一区二区-国产精品影视久久久久久久-久久99精品国产.久久久久久 |