//目录\src\utils\directives\btnAntiShake.ts
import { App, DirectiveBinding } from 'vue';
export default (app: App<Element>) => {
app.directive('btnAntiShake', {
mounted(el: HTMLElement, binding: DirectiveBinding) {
el.addEventListener('click', () => {
if (!el.disabled) {
binding.value();
el.disabled = true;
setTimeout(() => {
el.disabled = false;
}, 4000);
}
});
},
});
};
页面使用
//v-btnAntiShake绑定click事件
<a-button
type="primary"
style="margin: 0 8px"
v-btnAntiShake="submit"
>提交</a-button
>