当前位置:   article > 正文

Vue 项目中使用防抖与节流

Vue 项目中使用防抖与节流

防抖函数

在某个事件触发后,延迟一段时间执行函数,如果在这段时间内再次触发该事件,则重新计时。常见的应用场景是搜索框输入时,当用户连续输入时,只在输入完成后触发搜索请求。

节流函数

在某个事件触发后,间隔一段时间执行函数,如果在这段时间内再次触发该事件,则忽略该事件。常见的应用场景是滚动事件,当用户滚动页面时,只在一定时间间隔内执行滚动处理函数。

封装防抖节流函数:

  1. // 防抖函数封装
  2. export function debounce(func, delay) {
  3.   let timer = null;
  4.   return function (...args) {
  5.     clearTimeout(timer);
  6.     timer = setTimeout(() => {
  7.       func.apply(this, args);
  8.     }, delay);
  9.   };
  10. }
  1. // 节流函数封装
  2. export function throttle(func, delay) {
  3.   let timer = null;
  4.   return function (...args) {
  5.     if (!timer) {
  6.       timer = setTimeout(() => {
  7.         func.apply(this, args);
  8.         timer = null;
  9.       }, delay);
  10.     }
  11.   };
  12. }

将这些函数定义在一个单独的文件中(例如utils.js),然后在需要使用的组件中引入并使用它们。

如下是在Vue组件中使用防抖和节流函数的示例:

  1. <template>
  2.   <div>
  3.     <input type="text" v-model="searchQuery" @input="handleSearch" />
  4.   </div>
  5. </template>
  1. <script>
  2. import { debounce, throttle } from '@/utils';
  3. export default {
  4.   data() {
  5.     return {
  6.       searchQuery: '',
  7.     };
  8.   },
  9.   methods: {
  10.     // 使用防抖函数处理搜索输入
  11.     handleSearch: debounce(function () {
  12.       // 在这里执行搜索操作
  13.       console.log('Perform search:', this.searchQuery);
  14.     }, 300),
  15.     // 使用节流函数处理滚动事件
  16.     handleScroll: throttle(function () {
  17.       // 在这里执行滚动处理逻辑
  18.       console.log('Handle scroll event');
  19.     }, 200),
  20.   },
  21. };
  22. </script>

在上述代码中,handleSearch函数使用了防抖函数debounce,在输入框的@input事件中触发搜索操作。handleScroll函数使用了节流函数throttle,在滚动事件中触发滚动处理逻辑。

这样,你就可以方便地在Vue项目中使用防抖和节流功能了。记得在需要的地方引入封装的函数并适当调整防抖或节流的延迟时间来满足你的需求。

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

闽ICP备14008679号