兩種清除setInterval的方式:this
方案一:spa
data() { return { timer: null // 定時器名稱 } }, mouted() { this.timer = (() => { // 某些操做 }, 1000) }, beforeDestroy() { clearInterval(this.timer); this.timer = null; }
方案二(官方推薦):經過$once事件偵聽器器在定義完定時器以後的位置來清除定時器。code
方案一有兩個潛在的問題:blog
timer
,若是能夠的話最好只有生命週期鉤子能夠訪問到它。這並不算嚴重的問題,可是它能夠被視爲雜物。mounted() { const timer = setInterval(() =>{ // 某些定時器操做 }, 500); // 經過$once來監聽定時器,在beforeDestroy鉤子能夠被清除。 this.$once('hook:beforeDestroy', () => { clearInterval(timer); }) }