方案一(推薦)
通過$once這個事件監(jiān)聽器在定義完定時器之后的位置來清除定時器
const timer = setInterval(() =>{
// 某些定時器操作
}, 1000);
// 通過$once來監(jiān)聽定時器喘先,在beforeDestroy鉤子可以被清除亥啦。
this.$once('hook:beforeDestroy', () => {
clearInterval(timer);
})
方案二(不推薦)
通過beforeDestroy()生命周期內(nèi)清除定時器恒傻;
data() {
return {
timer: null // 定時器名稱
}
},
beforeDestroy() {
clearInterval(this.timer);
this.timer = null;
}
this.timer = (() => {
// 某些操作
}, 1000)
方案二不推薦理由:它需要在這個組件實例中保存這個 timer,如果可以的話最好只有生命周期鉤子可以訪問到它。這并不算嚴重的問題,但是它可以被視為雜物塞椎。
我們的建立代碼獨立于我們的清理代碼,這使得我們比較難于程序化的清理我們建立的所有東西睛低。