页面显示时开启定时,页面不显示时清除定时
显示二维码的时候需要一个定时器一分钟刷新一次,离开当前页面后定时器还在执行如何清除定时器?上代码
<template>
<view class="code">
<view class="code-box">
<view class="code-img-box">
<uqrcode ref="uqrcode" canvas-id="qrcode" :value="codeSn"></uqrcode>
</view>
<view class="refresh-box">
<text class="tips">每分钟自动刷新二维码</text>
<text class="refresh-btn" @tap="getReservationQrCode()">手动刷新</text>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
data: {},
timer: "",
codeSn: ""
}
},
setTime
onLoad() {
//定时器
this.setTime()
},
methods: {
setTime() {
//每隔一分钟刷新一次二维码方法
this.timer = setInterval(() => {
console.log("每分钟执行一次")
this.getReservationQrCode();
}, 60000)
},
//获取二维码
getReservationQrCode() {
let routes = getCurrentPages(); // 获取当前打开的页面路由数组
let curRoute = routes[routes.length - 1].route //获取当前页面路由
// 判断当前显示的页面是否是 二维码显示页面 ,是当前页面便刷新二维码,否则清空定时器
if (curRoute != 'pages/wdyy/detail') {
clearInterval(this.timer); // 清除定时器
this.timer = ""
return false
}
var obj = {
//参数
}
//获取二维码接口
this.$http.post(接口地址).then(res => {
uni.hideLoading()
if (res.code == 200) {
//获取二位密码数据
if (res.data.codeSn) {
this.codeSn = res.data.codeSn
}
} else {
uni.showToast({
title: res.msg,
icon: 'error'
})
}
}).catch(e => {
uni.showToast({
title: e.msg,
icon: 'error'
})
})
},
}
}