vue防重复点击(指令实现)

快速点击按钮会重复多次调用接口,防止出现这样的情况

全局定义,方便调用

1.新建plugins.js

export default {
  install (Vue) {
    // 防重复点击(指令实现)
    Vue.directive('preventReClick', {
      inserted (el, binding) {
        el.addEventListener('click', () => {
          if (!el.disabled) {
            el.disabled = true
            setTimeout(() => {
              el.disabled = false
            }, binding.value || 3000)
          }
        })
      }
    })
  }
}

2.在main.js引用,使全局可用

3.按钮调用直接加v-preventReClick



<el-button type="prismary" style="width:100%;" @click="handleSubmit" v-preventReClick></el-button>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3中的自定义指令可以通过使用`directive`函数来创建。在创建自定义指令时,需要指定指令的名称和相关的钩子函数。例如,对于一个点自定义指令,可以使用以下代码: ``` import { directive } from 'vue'; const clickOutside = { beforeMount(el, binding) { el.clickOutsideEvent = function (event) { if (!(el === event.target || el.contains(event.target))) { binding.value(); } }; document.addEventListener('click', el.clickOutsideEvent); }, unmounted(el) { document.removeEventListener('click', el.clickOutsideEvent); }, }; export default directive('click-outside', clickOutside); ``` 在上面的代码中,我们定义了一个名为`click-outside`的自定义指令,并实现了`beforeMount`和`unmounted`钩子函数。`beforeMount`钩子函数会在指令绑定到元素上时被调用,我们在这里添加了一个事件监听器,用于检测点事件是否发生在元素外部。如果是,则调用绑定的函数。`unmounted`钩子函数会在指令与元素解绑时被调用,我们在这里移除了之前添加的事件监听器。 使用自定义指令时,可以通过`v-`前缀来指定指令名称,并使用`:`语法来传递参数。例如,对于上面定义的`click-outside`指令,可以在模板中这样使用: ``` <template> <div v-click-outside="handleClickOutside"> ... </div> </template> <script> export default { methods: { handleClickOutside() { // 处理点事件 }, }, }; </script> ``` 在上面的代码中,我们将`click-outside`指令绑定到一个`div`元素上,并传递了一个名为`handleClickOutside`的方法作为参数。当用户在`div`元素外部点时,`handleClickOutside`方法会被调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值