vue中銷(xiāo)毀定時(shí)器的幾種解決方案
引言
vue是單頁(yè)面應(yīng)用,路由切換后,定時(shí)器并不會(huì)自動(dòng)關(guān)閉,需要手動(dòng)清除,當(dāng)頁(yè)面被銷(xiāo)毀時(shí),清除定時(shí)器即可。
場(chǎng)景:在A.vue頁(yè)面有一個(gè)定時(shí)a,然后跳轉(zhuǎn)到B.vue頁(yè)面,此時(shí)A頁(yè)面的定時(shí)器a依然在運(yùn)行。
解決方式一:
- 首先在data里進(jìn)行定義定時(shí)器;
data() { return { timer: null // 定時(shí)器名稱(chēng) } },
- 然后在mounted里使用定時(shí)器;
this.timer= setInterval(() => { // 操作 method(); }, 60000);
- 最后在beforeDestroy里清除定時(shí)器;
beforeDestroy() { if (this.timer) { clearInterval(this.timer); } },
解決方式二:
通過(guò)$once這個(gè)事件偵聽(tīng)器在定義完定時(shí)器之后的位置來(lái)清除定時(shí)器。
this.timer= setInterval(() => { // 操作 method(); }, 60000); // 通過(guò)$once來(lái)監(jiān)聽(tīng)定時(shí)器,在beforeDestroy鉤子可以被清除 this.$once('hook:beforeDestroy', () => { clearInterval(this.timer); })
解決方式三:
beforeRouteLeave(to, from, next){ next(); if (this.timer) { clearInterval(this.timer); this.timer = null; } },
附:vue離開(kāi)頁(yè)面時(shí)清除定時(shí)器
let timer = setInterval(function(){ console.log("我是定時(shí)器====="); },2000); this.$once("hook:beforeDestroy", () =>{ clearInterval(timer); });
總結(jié)
到此這篇關(guān)于vue中銷(xiāo)毀定時(shí)器的幾種解決方案的文章就介紹到這了,更多相關(guān)vue銷(xiāo)毀定時(shí)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue3中的defineExpose函數(shù)用法深入解析
這篇文章主要介紹了Vue3中的defineExpose函數(shù)用法的相關(guān)資料,defineExpose是Vue3中用于在模式下暴露組件內(nèi)部屬性和方法的輔助函數(shù),它允許父組件通過(guò)ref訪(fǎng)問(wèn)子組件的暴露內(nèi)容,提高組件間的交互能力并保持封裝性,需要的朋友可以參考下2025-01-01vue elementui select標(biāo)簽監(jiān)聽(tīng)change事件失效問(wèn)題
這篇文章主要介紹了vue elementui select標(biāo)簽監(jiān)聽(tīng)change事件失效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04Vue3使用sessionStorage保存會(huì)話(huà)數(shù)據(jù)的實(shí)現(xiàn)方式
在前端開(kāi)發(fā)中,我們常常需要在用戶(hù)會(huì)話(huà)期間保存一些數(shù)據(jù),這些數(shù)據(jù)在頁(yè)面刷新或?qū)Ш綍r(shí)依然需要存在,sessionStorage 是一種非常方便的方式來(lái)實(shí)現(xiàn)這一點(diǎn),在這篇文章中,我們將探討如何在Vue3應(yīng)用中使用sessionStorage來(lái)保存會(huì)話(huà)數(shù)據(jù),需要的朋友可以參考下2025-01-01vue在自定義組件上使用v-model和.sync的方法實(shí)例
自定義組件的v-model和.sync修飾符其實(shí)本質(zhì)上都是vue的語(yǔ)法糖,用于實(shí)現(xiàn)父子組件的"數(shù)據(jù)"雙向綁定,下面這篇文章主要給大家介紹了關(guān)于vue在自定義組件上使用v-model和.sync的相關(guān)資料,需要的朋友可以參考下2022-07-07解決vue中菜單再次點(diǎn)擊內(nèi)容不刷新問(wèn)題
當(dāng)elementUI中菜單打開(kāi)后,再次點(diǎn)擊不會(huì)刷新的問(wèn)題,導(dǎo)致菜單再次點(diǎn)擊不刷新的根本原因是頁(yè)面打開(kāi)后,再次打開(kāi)相同的頁(yè)面是不會(huì)刷新的,這應(yīng)該是框架的機(jī)制就是如此,小編整理了兩個(gè)比較不錯(cuò)的解決方法,需要的朋友可以參考下2023-08-08Vue源碼學(xué)習(xí)之?dāng)?shù)據(jù)初始化
這篇文章主要為大家介紹了Vue源碼學(xué)習(xí)之?dāng)?shù)據(jù)初始化實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09