在自定义组件的属性的属性监听器内写倒计时5s,每次属性为true就开始重新从5s倒计时;false就清空倒计时。
现在遇到的问题有两个
1.在ts文件中timer类型错误,;timer该写什么类型呢?
2.在判断属性show=false时,清空计时器无效,timer是同一个,倒计时依然在执行,清空无效,造成show=true时,不是从5s开始倒计时,改在哪里清空倒计时呢?
properties: {
show: {
type: Boolean,
observer: function (newVal) {
let timer: null | number = null
if (newVal) {
let count = 5
timer = setInterval(() => {
if (count > 0 && count <= 5) {
count--
console.log('countcount倒计时', count)
this.setData({ count })
} else {
clearInterval(timer)
timer = null
console.log('countcount结束', count)
}
}, 1000)
} else {
console.log('countcount中断', timer) // 清空无效,倒计时继续在执行
clearInterval(timer)
timer = null
}
}
},
},
第二个问题我吧timer放在data里面,用this.data.timer解决了;(但是我有个疑惑:之前的timer是放在执行函数的最顶层啊)
function a(_timer){ let timer = _timer; return timer};
const b = a(1);
const c = a(2);