vue beforeDestroy clearInterval清除定时器失效
vue beforeDestroy clearInterval清除定时器失效
·
我发现遇到这个问题的人挺多的,自己遇到过,改别人代码的时候也遇到过,赶紧记下来~这方法好使~
情景:路由跳转时触发了beforeDestroy,里面也写了清除计时器的相关代码,但是到其他页面时还是在一直执行。
// 父组件 某条件触发路由跳转,定时器在/xxx中一直调用
router.push('/xxx')
// 子组件
mounted() {
this.timer = setInterval(()=>{
this.heartbeat();
},5000);
},
beforeDestroy(){
// 页面离开时断开连接,清除定时器
console.log( '------------' );
clearInterval(this.timer);
},
解决方法:
使用程序化的事件侦听器,试试这个:
mounted: function () {
var timer = setInterval(()=>{
this.heartbeat();
},5000);
// 通过 $once 来监听定时器,在 beforeDestroy 钩子可以被清除。
this.$once('hook:beforeDestroy', () => {
clearInterval(timer);
})
}
更多推荐
已为社区贡献1条内容
所有评论(0)