点击上方“青年码农”关注
回复“源码”可获取各种资料
使用 Vue 框架开发项目中,遇到个问题,就是在用户提交数据时,如果连续多次点击按钮,会触发多次,导致数据异常,因此需要限制用户短时间内多次点击同一按钮,只触发一次。
1. 自定义指令
利用元素的 disabled 属性,新建自定义指令,preventClick.js
export default {
install(Vue) {
Vue.directive('preventClick', {
inserted(button, bind) {
button.addEventListener('click', () => {
if (!button.disabled) {
button.disabled = true;
setTimeout(() => {
but.disabled = false
}, )
}
})
}
})
}
}
在 main.js 中引入
组件中使用
2. 防抖函数
函数防抖的基本思想是设置一个定时器,在指定时间间隔内运行代码时清楚上一次的定时器,并设置另一个定时器,直到函数请求停止并超过时间间隔才会执行。
export function debounce(fn, delay = ) {
// 记录上一次的延时器
var timer = null;
return function() {
var args = arguments;
var that = this;
// 清除上一次延时器
clearTimeout(timer)
timer = setTimeout(function() {
fn.apply(that,args)
}, delay);
}
}
导入到组件中使用
正文完