原生的小程序的wx.showModel组件没有直接关闭的方法,原生组件比较坑就是了,所以只能用其他方法,目前的需求就是一个页面会显示多个弹窗确认,但我只需要显示一个即可,确认关闭后,只要不刷新就不会再触发
防抖
作用:在一段时间内只执行一次函数
问题:由于原生小程序安装插件比较麻烦,所以就手写一个吧
封装防抖函数
let timer
let flag
function debounce(func, wait = 500 , immediate = false) {
if (immediate) {
if(!flag) {
flag = true
typeof func === 'function' && func()
timer = setTimeout(() => {
flag = false
}, wait)
}
} else if (!flag) {
flag = true
timer = setTimeout(() => {
flag = false
typeof func === 'function' && func()
}, wait)
}
}
使用
在需要多次弹窗的判断逻辑下使用
debounce(() => {
wx.showModal({
title: '提示',
content: '测试
showCancel: false,
success(res) {
if (res.confirm) {
console.log('确定');
}
}
})
}, 800, false)
这样效果就实现了!
###题外:原生的小程序真的很坑,而且安卓和Ios显示有时候会不一样,兼容性问题吧,经常搞得我比较懵,能用uniapp开发就uniapp吧!!!