当前位置:网站首页 > Vue.js开发 > 正文

vue3中,全局自定义指令——DirectiveBinding & v-throttle节流-保存和提交按钮时间间隔内点击多次只执行一次

vue3中,全局自定义指令——DirectiveBinding & v-throttle节流-保存和提交按钮时间间隔内点击多次只执行一次

页面
 <el-button v-throttle="3000" type="primary" @click="save" > 保存 </el-button> 
方法

library\plugins\directive.ts

import type { 
    DirectiveBinding } from 'vue' export function setup(app: any) { 
    / * @description 自定义节流指令v-throttle */ app.directive('throttle', { 
    mounted(el: any, binding: DirectiveBinding) { 
    let { 
    throttleTime } = binding.value if (!throttleTime) { 
    throttleTime = 1000 } let timer: any let disable = false el.addEventListener( 'click', (event: any) => { 
    if (timer) { 
    clearTimeout(timer) } if (!disable) { 
    disable = true } else { 
    event && event.stopImmediatePropagation() } timer = setTimeout(() => { 
    timer = null disable = false }, throttleTime) }, true ) }, }) } 
附:自定义vue3指令

在vue3中,自定义指令需要使用directive函数来自定义指令

import { 
   createApp} from 'vue' const app = createApp({ 
   }) app.directive('demo',{ 
    //指令绑定到元素时调用 mounted(el,binding){ 
    console.log(binding.value) }, //指令与元素解绑时调用 unmounted(el,binding){ 
   } }) 

定义一个v-demo的指令,当该指令绑定到元素时,会调用mounted方法,并传入两个参数:元素本身和指令对象(包含了一些属性,比如:值、修饰符等),当指令与元素解绑时,会调用unmounted方法。

使用指令

<div v-demo="hello world"> 自定义指令 </div> 

这样,在页面渲染完成后,控制台就会输出字符串“hello world”

注意:在vue3中,不能通过全局注册方式来注册自定义指令。必须要在应用实例上使用directive()方法进行注册。

到此这篇vue3中,全局自定义指令——DirectiveBinding & v-throttle节流-保存和提交按钮时间间隔内点击多次只执行一次的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • vue3项目初始化配置流程(含注释)2024-11-29 07:09:07
  • vue3中,父子组件props传函数写法-传动态接口 & 特殊字符校验 & 封装公共input组件2024-11-29 07:09:07
  • vue中,格式化时间戳转换成标准时间 & 获取随机id-uuid & random-m到n的随机数2024-11-29 07:09:07
  • js计算两个时间戳的时间差之多少天、时、分、秒,格式0000、动态显示年月日时分秒(不足两位补0)2024-11-29 07:09:07
  • vue项目中 jsconfig.json和tsconfig.json文件配置释义 & compilerOptions配置2024-11-29 07:09:07
  • vue常见源码面试题2024-11-29 07:09:07
  • npm相关之npm初始化、切换npm镜像源、package.json释义、require 的加载机制 & ES6降级处理-babel包2024-11-29 07:09:07
  • vue中,js封装方法之判断js对象类型 & 封装方法之js对象深拷贝2024-11-29 07:09:07
  • vue3中,echarts在柱形图上加基准线,自定义tooltip2024-11-29 07:09:07
  • vue3中,echarts使用(四)02——柱状图之堆叠条形图-定制化 & 封装切换tag标签组件 & 封装title组件2024-11-29 07:09:07
  • 全屏图片