解决Vue小程序中 针对数组(列表) 实现倒计时倒数效果越来越快的问题

xiaoxiao2021-02-28  45

你可能会使用watch监听list

由于watch监听数据变化,对数据进行遍历时,当只有一个item符合条件时倒计时正常,一旦多个item符合条件,if语句内执行了一次以上,由于多个item发生改变会多次触发watch,导致倒计时越来越快,

错误效果

watch={ List(val){ //var timer = setInterval(()=>{ var timer = setTimeout(()=>{ val.forEach((item)=>{ if(item.button_mark===0 && item.count_down>0){ item.count_down--; this.$apply() } }) timer = null; },1000) } }

解决办法

#####正确效果

1.添加method countDown作用于list
countDown(List){ setInterval(()=>{ for(var index in list) { if(list[index].button_mark===0 && list[index].count_down>0){ list[index].count_down--; } } this.$apply() },1000) } this.countDown(List);

如果觉得我的文章对你有帮助,欢迎关注我的blog

相关知识点

【Javascript】深入理解async/await的实现,Generator+Promise = Async/Await 【Javascript】深入理解this作用域问题以及new运算符对this作用域的影响 【Javascript】手写运算符new创建实例并实现js继承

转载请注明原文地址: https://www.6miu.com/read-2612669.html

最新回复(0)