在uni-app中,经常会碰到多次触发事件,重复点击,导致造成业务出现问题。
虽然在后端可以进行操作,防止业务问题。那么前端该如何实现呢?
1.在根目录下新建common文件并创建noclick.js文件
function noMultipleClicks(methods, info) {
let that = this;
if (that.noClick) {
that.noClick= false;
if(info && info !== '') {
methods(info);
} else {
methods();
}
setTimeout(()=> {
that.noClick= true;
}, 2000)
} else {
}
}
export default {
noMultipleClicks,
}
2.man.js文件中引入
import noclick from 'common/noclick.js'
Vue.prototype.$noMultipleClicks = noclick.noMultipleClicks;
3.在页面中使用
3.1不传参,直接传一个方法就行
data() {
return {
noClick:true,
}
},
<view class="bottom-btn-box">
<view class="submit-btn" @click="$noMultipleClicks(commitWork)">提交</view>
</view>
methods:{
commitWork(){
}
}
3.1带参数,传一个方法和一个参数就行
data() {
return {
noClick:true,
}
},
<view class="bottom-btn-box">
<view class="pay" @click.stop="$noMultipleClicks(goPay, item)" >支付</view>
</view>
methods:{
goPay(item){
}
}