vue防抖指令方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue防抖指令方法相关的知识,希望对你有一定的参考价值。

参考技术A 1.创建 common.js 文件 

/**

 * @desc 函数防抖

 * @param func 函数

 * @param wait 延迟执行毫秒数

 * @param immediate true 表立即执行,false 表非立即执行

 */

export function debounce(func, wait, immediate = true) 

  let timeout

  return function () 

    if (timeout) clearTimeout(timeout)

    if (immediate) 

      var callNow = !timeout

      timeout = setTimeout(() => 

        timeout = null

      , wait)

      if (callNow) func.apply(this, arguments)

     else 

      timeout = setTimeout(function () 

        func.apply(context, args)

      , wait)

    

  



2.创建 directives.js文件

import Vue from 'vue'

import  debounce  from '@/plugins/common'

//防抖自定义指令

Vue.directive('debounce',

    bind(el,binding)

        let executeFunction;

        if(binding.value instanceof Array)//传参

            executeFunction = debounce(func,time)

        else//不传参

            executeFunction = debounce(binding.value,1000)

        

        el.addEventListener('click',executeFunction);

    

)

3.main.js 引入 import '@/directives'

4. 使用 v-debounce='click函数不可以带括号 会自动触发函数'

vue 自定义指令防抖

directives: 
    throttle: 
      bind: (el, value) => 
        var falg = null
        el.addEventListener('click', function (event) 
          if (falg) 
            event.stopImmediatePropagation()
           else 
            falg = setTimeout(() => 
              falg = null
            , 10000)
          
        , true)
      
    
  ,
<el-button type="primary"
                   icon="el-icon-check"
                   @click="submitForm"
                   v-throttle>确 定</el-button>

以上是关于vue防抖指令方法的主要内容,如果未能解决你的问题,请参考以下文章

vue 自定义指令防抖

vue自定义防抖&节流指令的实现&全局指令定义和使用-案例

vue中自定义指令组件化生命周期节流和防抖获取DOMmint-ui简介过渡和动画

vue防抖节流之v-debounce--throttle使用指南

手把手教你在vue中使用自定义指令全局封装防抖节流函数

vue中使用防抖节流