前言
vue項目中,很多人寫定時器時,會把定時器timer定義在data里面措译,等到周期函數(shù)beforeDestroy時缨该,使用clearInterval(timer)來銷毀偎行。實際上定時器timer沒必要定義在data里面,這樣會增加內(nèi)存消耗贰拿。我們可以把定時器定義在mounted里面蛤袒,然后使用hook來監(jiān)聽beforeDestroy,當(dāng)beforeDestroy觸發(fā)時膨更,銷毀定時器妙真。這樣定時器和清理定時器達(dá)到了成對出現(xiàn)而且離得很近的效果。代碼如下荚守。
mounted() {
let currentTimer = setInterval(() => {
this.time = dayjs().format('YYYY-MM-DD HH:mm:ss')
}, 1000)
this.$once('hook:beforeDestroy', () => {
clearInterval(currentTimer)
currentTimer = null
console.log('全都銷毀了');
})
},