当前位置:   article > 正文

vue中使用防抖函数_vue防抖函数

vue防抖函数

一、基本概念

在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时,计时结束执行回调。(通俗来说就是当持续触发某事件时,一定时间间隔内没有再触发事件时,事件处理函数才会执行一次,如果设定的时间间隔到来之前,又一次触发了事件,就重新计时,计时结束执行回调)。
        函数防抖的基本思想是设置一个定时器,在指定时间间隔内运行代码时清楚上一次的定时器,并设置另一个定时器,知道函数请求停止并超过时间间隔才会执行。

二、使用

1、直接使用

  1. const debounce = (function() {
  2. let timer = 0;
  3. return function(callback, ms = 200) { //设置默认200ms
  4. clearTimeout(timer);
  5. timer = setTimeout(callback, ms);
  6. };
  7. })();
  8. export default {
  9. methods: {
  10. setNavLeft() {
  11. debounce(async () => {
  12. let navleft =
  13. parseInt(this.$refs.navr.getBoundingClientRect().left) + 846 + "px";
  14. this.$refs.navdiv.style.left = navleft;
  15. }, 100);
  16. },
  17. }
  18. }

2、封装为公用方法

第一步,在utils文件夹下建立index.js文件

  1. // index.js
  2. export default {
  3. debounce(fn, delay = 300) { //默认300毫秒
  4. let timer;
  5. return function () {
  6. let args = arguments;
  7. if (timer) {
  8. clearTimeout(timer);
  9. }
  10. timer = setTimeout(() => {
  11. fn.apply(this, args); // this 指向vue
  12. }, delay);
  13. };
  14. }
  15. }

第二步,组件内引入该js

import publicFn from '@/utils/index'

第三步,组件的methods方法进行调用

  1. methods: {
  2. //开始调用
  3. moveOver: publicFn.debounce(function () {
  4. ++this.count;
  5. console.log(this.count)
  6. }, 200),
  7. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/117950
推荐阅读
相关标签
  

闽ICP备14008679号