前置条件:在 A页面加了一个check选择,需要自动刷新请求接口;然后在未取消自动刷新时跳转了其他页面后再次回到 A页面 去清理掉定时器。
<el-checkbox v-model="checked" @change="changeRef"> 自动刷新 </el-checkbox>
用的clearInterval(this.timer)没有效果,清掉一次后直接走了接口方法,checked自动变为true。
用了this.timerList、window.clearInterval(this.timer)清除也不行
因为在跳转页面前 将自动刷新状态保存在本地
// 自动刷新设置
changeRef(){
let that = this;
localStorage.setItem('checked',this.checked);
const checks = localStorage.getItem('checked');
if(checks == 'true' && this.checked == true){
that.timer = window.setInterval(function(){
that.getTable()
},5000)
}else{
localStorage.removeItem('checked');
window.clearInterval(that.timer);
}
},
可以在点击取消自动刷新时,将状态进行更新,并在请求接口之前做个判断,
getTable(){
const checks = localStorage.getItem('checked');
if(checks == 'true'){
//请求方法
}else{
window.clearInterval(this.timer);
}
}
这样就清掉了................
标签:定时器,checked,setInterval,清除,clearInterval,timer,window,localStorage,刷新 From: https://www.cnblogs.com/cyapi/p/16722218.html