欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue3自定義指令實(shí)現(xiàn)按鈕防抖示例詳解

 更新時(shí)間:2023年02月27日 09:37:10   作者:元子不圓呀  
這篇文章主要為大家介紹了vue3自定義指令實(shí)現(xiàn)按鈕防抖示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

寫(xiě)在前面

在實(shí)際項(xiàng)目開(kāi)發(fā)過(guò)程中,對(duì)于按鈕的提交事件來(lái)說(shuō),我們需要限制按鈕重復(fù)點(diǎn)擊,避免在某個(gè)時(shí)間內(nèi)重復(fù)提交。這時(shí)候我們一般用到事件的防抖,也就是說(shuō)在規(guī)定時(shí)間連續(xù)多次觸發(fā)事件,回調(diào)函數(shù)只會(huì)執(zhí)行最近的一次。但是如果在每個(gè)組件的按鈕中都添加防抖代碼,相當(dāng)于是復(fù)制粘貼,增加代碼量,我們這篇文章主要就是介紹使用自定義指令設(shè)置按鈕防抖,這樣按鈕需要使用的時(shí)候就只用寫(xiě)一個(gè)指令了。

自定義指令實(shí)現(xiàn)按鈕防抖

實(shí)現(xiàn)思路

  • 監(jiān)聽(tīng)按鈕的點(diǎn)擊事件
  • 給點(diǎn)擊事件設(shè)置防抖,如果特定時(shí)間段內(nèi)多次提交,則每以最后一次重新計(jì)算時(shí)間。

代碼實(shí)現(xiàn)

1. 在directives文件夾下新建一個(gè)文件

preReClick.js內(nèi)容如下:主要是利用防抖控制按鈕是否可用

export default (app) => {
  app.directive('preReClick', {
    mounted(el, binding) {
      el.addEventListener('click', () => {
        if (!el.disabled) {
          el.disabled = true;
          setTimeout(() => {
            el.disabled = false;
          }, binding.value || 2000)
        }
      })
    }
  })
}

2. 在main.js中引入指令文件

import { createApp } from 'vue'
import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
// import myPlugin from './plugins/myPlugin'
import showTip from './directives/showTip.js';
import preReClick from './directives/preReClick.js';
const app = createApp(App);
app.directive('show-tip', showTip);
app.use(ElementPlus).use(preReClick).mount('#app');

組件中使用

引入完成之后就可以在組件中使用v-preReClick。

<template>
  <div class="test-wrapper">
    <div class="test-value">
      <el-tooltip placement="top" :content="name">{{name}}</el-tooltip>
    </div>
    <button @click="confirm" v-preReClick>點(diǎn)我點(diǎn)我</button>
  </div>
</template>
<script setup>
const name = '這是一段一段一段一段一段非常非常非常非常長(zhǎng)長(zhǎng)的文本';
const confirm = () => {
  console.log('觸發(fā)了按鈕點(diǎn)擊事件');
}
</script>
<style scoped>
.test-value {
  width: 100%;
  display: inline-block;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}
</style>

效果如下: 在2s時(shí)間內(nèi),多次點(diǎn)擊按鈕只打印了一次信息。

總結(jié)

給按鈕設(shè)置防抖防止多次提交請(qǐng)求不論對(duì)于用戶體驗(yàn)還是后端服務(wù)請(qǐng)求的壓力等,都是很有必要的,使用自定義指令可以更好的維護(hù)代碼,減少代碼量。

以上就是vue3自定義指令實(shí)現(xiàn)按鈕防抖示例詳解的詳細(xì)內(nèi)容,更多關(guān)于vue3自定義指令按鈕防抖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue使用計(jì)算屬性完成動(dòng)態(tài)滑竿條制作

    vue使用計(jì)算屬性完成動(dòng)態(tài)滑竿條制作

    這篇文章主要介紹了vue使用計(jì)算屬性完成動(dòng)態(tài)滑竿條制作,文章圍繞計(jì)vue算屬制作動(dòng)態(tài)滑竿條的相關(guān)代碼完成內(nèi)容,需要的朋友可以參考一下
    2021-12-12
  • Vue 列表渲染 key的原理和作用詳解

    Vue 列表渲染 key的原理和作用詳解

    這篇文章主要介紹了key在Vue列表渲染時(shí)的原理和作用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10
  • vue router動(dòng)態(tài)路由設(shè)置參數(shù)可選問(wèn)題

    vue router動(dòng)態(tài)路由設(shè)置參數(shù)可選問(wèn)題

    這篇文章主要介紹了vue-router動(dòng)態(tài)路由設(shè)置參數(shù)可選,文中給大家提到了vue-router 動(dòng)態(tài)添加 路由的方法,需要的朋友可以參考下
    2019-08-08
  • Antd中單個(gè)DatePicker限定時(shí)間輸入范圍操作

    Antd中單個(gè)DatePicker限定時(shí)間輸入范圍操作

    這篇文章主要介紹了Antd中單個(gè)DatePicker限定時(shí)間輸入范圍操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • vant-Dialog 彈出框的使用小結(jié)

    vant-Dialog 彈出框的使用小結(jié)

    這篇文章主要介紹了vant-Dialog 彈出框的使用小結(jié),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • Vue Element UI 中 el-table 樹(shù)形數(shù)據(jù) tree-props 多層級(jí)使用避坑指南

    Vue Element UI 中 el-table 樹(shù)形數(shù)據(jù) 

    這篇文章主要介紹了Vue Element UI 中 el-table 樹(shù)形數(shù)據(jù) tree-props 多層級(jí)使用避坑指南,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • vue2.x中keep-alive源碼解析(實(shí)例代碼)

    vue2.x中keep-alive源碼解析(實(shí)例代碼)

    Keep-Alive模式避免頻繁創(chuàng)建、銷(xiāo)毀鏈接,允許多個(gè)請(qǐng)求和響應(yīng)使用同一個(gè)HTTP鏈接,這篇文章主要介紹了vue2.x中keep-alive源碼解析,需要的朋友可以參考下
    2023-02-02
  • vue+element模態(tài)框中新增模態(tài)框和刪除功能

    vue+element模態(tài)框中新增模態(tài)框和刪除功能

    這篇文章主要介紹了vue+element模態(tài)框中新增模態(tài)框和刪除功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Vue+Video.js實(shí)現(xiàn)視頻抽幀并返回抽幀圖片Base64

    Vue+Video.js實(shí)現(xiàn)視頻抽幀并返回抽幀圖片Base64

    這篇文章主要為大家詳細(xì)介紹了Vue如何利用Video.js實(shí)現(xiàn)視頻抽幀并返回抽幀圖片Base64,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2024-01-01
  • vue-cli項(xiàng)目代理proxyTable配置exclude的方法

    vue-cli項(xiàng)目代理proxyTable配置exclude的方法

    今天小編就為大家分享一篇vue-cli項(xiàng)目代理proxyTable配置exclude的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09

最新評(píng)論