国产女主播成人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í)正確移除...

国产午夜伦鲁鲁91-激情欧美一区二区三区在线观看-亚洲精品乱码久久久久久5-热久久在线观看 | 亚洲欧美一区麻豆-老司机午夜精品视频-人人爽人人干人人妻-久久久久久久国产精品电影 | 欧美色欧美亚洲另类二区不卡-国产免费自拍色视频-日本妻子中文字幕-人妻精品久久久久中文字幕一 女同另类中文字幕-久久九九99这里只有精品-日韩欧美激情不卡-亚洲天堂操操操操操操 | 超碰97国产女人让你操-91久久香蕉国产熟女-日韩91久久精品-国产 一区二区三区 在线 | 国产精品99久久久久久裸交-亚洲狠狠插2020-久久精品国产亚洲av高清热看看-久久久亚洲精品成人777 | 伊人久久久久大香蕉-激情婷婷久久久-人妻精品一区二区三区三州-日韩视频一区二区三区电影在线 | 99日精品视频在线-精品久久久久久999蜜桃婷婷-欧美日韩a级视频-成人久久久国产精品 | 中文字幕熟女人妻丝袜4k岛国-精品亚洲永久免费精-成人免费一级欧美激情-国产精品中文字幕视频在线 | 激情五月婷婷久久综合-超碰在线97美女-超碰在线中文字幕人妻-69久久久成人看片免费一区二 | 日韩精品人妻26uuuu-欧美人妻cuckoid-色婷婷,婷婷色-伊人激情综合中文字幕 | 精品日韩午夜在线-成人a级视频在线播放-久久国产精品成人免费古装-久久99精品久久久久久噜噜噜 | 人人妻人人澡人人爽久久av网站-av中文字幕网一区-日韩欧美一区二区三区国产-麻豆91精品91久久 | 国产精品久久久久久久久银杏-92精品一区二区三区-久久久久久久精品一区二区三区-久久热精品18国产 | 国产传媒麻豆剧精品av国产-中文字幕 尤物视频-日韩,欧美一区二区三区免费-麻豆国产精品久久综合亚洲av | 91精品国产综合久久久久久白拍-日韩美女写真视频网站-熟女av中文字幕久色-天天日天天超碰天天日 亚洲中文字幕在线的-99久久精品蜜桃-日本精品久久在线-久久久久久久久久久精品 | 国产精品麻豆综合在线-伊人久久久久中文字幕-国产精品久久久久久久久av大片-国产欧美日韩一级二级三级 | 亚洲成熟毛多妇女av毛片-久久免费视频777-91麻豆网址在线观看-欧洲亚洲精品视频在线观看 | 97精品国产91久久久久久久-丁香六月久久婷婷综合-日韩av手机在线免费观看-蜜臀国产一区二区三区 国内精品伊人久久久av高清影-91久久国产精品小视频-内射中文字幕精品电影-熟女人妻中文字幕久久久边 | 97久久久国产精品爽-国产久久久久久久久久一区二区三区四区-99精品视频在线观看视频不卡-久久久精品人妻一区二区三区四 | 中文字幕一二区av-日韩巨乳佐山爱中文字幕-97日韩在线免费视频网站-日韩天天操免费视频中国文字 中文字幕成人精品一区-日韩 亚洲 欧美 综合-麻豆午夜在线视频-国产成人99在线播放 | 激情五月婷婷色电影-久久超级碰中文字幕-日韩一卡二卡一区av-性高潮久久久久久久久免费 | 欧美日韩视频高清一区二区三区-狠狠躁18三区二区一区视频-久久亚洲av日韩av天堂-欧美日韩中文极速播放 | 91久久久久久在线-亚洲天堂中文字幕av手机版-国产亚洲欧美一区二区-色婷婷av一区二区三区免费 | av av com我爱好色-日韩欧美精品色-在线观看91精品视频-久久久久久综合影视 | 人妻少妇一区二区三区久久久-日韩中文激情在线-久久丝袜厕所偷拍-欧美日韩中文国产成人 | 日韩免费特级黄色片-久久爱免费视频16-中文字幕一区二区三区50路-欧美丰满熟妇激情网 | 久久亚洲一区二区三区舞蹈-超碰porn国产-日韩美女免费在线观看-av 日韩 中文字幕 | 狠狠人妻久久久久久综合蜜桃免费-久久久久久视频免费视频-欧美中文字幕精品成人-国产青娱乐在线视频 | 国产精品久久久18禁成人-成人av婷婷一区二区三区-在线免费观看中文字幕第一页-91在线精品一区二区三区 | 18禁国产麻豆精品久久久久久-超碰人妻av狠狠干-色婷婷综合久久久久久中文-国产av一区二区青青草原 | 亚洲欧洲一区二区三区av-日韩中文字幕一区二区丁香-中文字幕在线字幕中文乱码区别-免费观看国产美女隐私的视频网站 | 日韩无日韩精品视频-国产精品久久久久久中文字幕-精品推荐久久久久国产av-日韩日b视频在线观看 | 成人精品 一区二区三区-免费在线观看中文字幕av-日韩精品国语对白欧美-麻豆精品视频在线观看 | 91麻豆国产精品91久久久久久久-麻豆精品最新国产在线-色99免费在线视频-久久久中文字幕中文字幕性 | 狠狠操天天操天天干-国产激情一区二区三区四区-中文字幕婷婷中出-日韩av最新在线免费观看 | 97超碰精品视频在线观看-国产欧美日韩中文字幕-久久精品国产99精品最新版-日韩一区熟女av发布 | 国内熟妇和亚洲熟妇-精品国产乱子伦多人第1集-久久久久久91久久久精品酒店-亚洲成人乱码精品久久久久久.. | 日韩欧美激情在线视频-欧美人妻中文字幕在线播放-超碰在线精品免费-中文字幕在线乱码人妻 | 粉嫩一区二区三区在线观看-成人亚洲一区二区三区在线观看-熟女网一区二区三区-日韩不卡一区二区三区四区五区 | 日韩成年人在线电影-国产日韩欧美在线观看?-2020最新中文字幕在线-免费观看一区二区三区欧美 | 久久精品我在看-国产又粗又长又硬又猛电影-日本一区中文字幕在线视频-日韩精品中文字幕在线观看网站大全 |