当前位置: 首页 > 图灵资讯 > 技术篇> 【Vue】自定义防止重复提交指令

【Vue】自定义防止重复提交指令

来源:图灵教育
时间:2023-06-06 09:33:56

前端开发中防重复提交这是一个非常头痛和不可避免的话题。 现在我们定义一个指令v-preventReClick让它做这件事。

v-preventReClick

src/directive/preventReClick.js

/** * 防止重复提交指令 * 参考文档 javascript:void(0) * * @author: tanpeng * @date : 2020/5/20 18:08 * @version: v1.0.0 */const preventReClick = {  install: (Vue, options) => {    Vue.directive('preventReClick', {      inserted: (el, binding) => {        el.addEventListener('click', () => {          if (!el.disabled) {            el.disabled = true            // 使用输入绑定值,默认点击3000毫秒内不能重复            setTimeout(() => el.disabled = false, binding.value || 3000)          }        })      }    })  }}export default preventReClick
usage

src/main.js

import preventReClick from '@/directive/preventReClick'// 显示声明是全局指令,代码可读性更好.use(preventReClick)

src/Demo.vue

// 指定的延迟时间为1000ms<a-button  size="large" type="primary" v-preventReClick="1000">保 存</a-button>// 默认延迟时间3000ms<a-button  size="large" type="primary" v-preventReClick>保 存</a-button>
参考

Vue工程包装实践系列(2)[表单按钮重复提交,axios重复请求处理方案]