在微信小程序开发过程中,因为网络延迟或者恶意点击造成多次点击事件。对于注册或其他需在数据库中新建一条数据的页面,如果多次点击,可能会造成数据库相关数据具有多条,造成数据库资源占用、混乱等情况。而且对后期使用到这条数据内容的功能会造成影响。
例如:(我用的是云数据库)
wx.cloud.datebase().collection('yonghu').where({
phone:that.data.phone
}).get({
success:res=>{
if(res.data.length=1){
wx.showToast({
title:'获取成功'
})
}
}
})
像这种情况,如果云数据库中由于恶意点击或多次点击造成数据重复 ,则运行不成功。
因为我们的条件是获取到的数据的长度为1才执行下面的语句,所以解决多次点击造成的数据重复问题迫在眉睫。
我在查阅了很多网上的方法后,最终能成功的方法为:
//wxml页面,对按钮button进行如下设置
<button bindtap="{{isClick ? 'zhuce' : ''}}">注册</button>
//js页面
Page({
data:{
isClick:true,
},
zhuce(e){
this.setData({
isClick:false //在点击一次后,点击状态变为关闭,默认为开启
})
setTimeout(()=>{ //定义一个延时操作setTimeout
this.setData({
isClick:true
})
},3000 //在3秒后,点击状态恢复为默认开启状态
)
//下面书写主要方法,比方说判断输入内容是否为空、获取数据库数据、更新数据库内容等等
},
})
这是我对于防止恶意点击、多次点击等状况的解决方案,希望对大家有所帮助。
(我发现我数据库数据出现重复数据是因为我的鼠标不太好用,有时候点一次没反应,我九点好几次,造成了多次点击,数据库里面有好多条一样的数据,导致我后面的操作不成功)
对了!还有一种原因造成后面操作不成功,一定要检查下你的代码拼写是否正确。有一次我把res错写成了ras,也导致了后面操作不成功。
佛系更新微信云开发相关知识,敬请期待哦,喜欢的话给我点个
谢谢大家,撒花撒花。