问题:快速点击运行了多个setTimeout,导致页面卡死!
解决办法:找到uni-popup.vue 文件将里面的代码
open() {
this.showPopup = true
this.$nextTick(() => {
setTimeout(() => {
this.showTrans = true
}, 50);
})
this.$emit('change', {
show: true
})
},
close(type) {
this.showTrans = false
this.$nextTick(() => {
clearTimeout(this.timer)
this.timer = setTimeout(() => {
this.$emit('change', {
show: false
})
this.showPopup = false
}, 300)
})
},
修改为:
open() {
this.showPopup = true
this.showTrans = true
//在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。
this.$nextTick(() => {
this.$emit('change', { show: true, type: this.type })
})},
close(type) {
this.showTrans = false
this.showPopup = false
//在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。
this.$nextTick(() => { this.$emit('change', { show: false, type: this.type })
})},