在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){}
}