首页 > 其他分享 >vue——debounce防抖函数无效

vue——debounce防抖函数无效

时间:2023-08-21 16:11:26浏览次数:47  
标签:load 防抖 vue 函数 debounce timer

参考:

vue记录-vue中使用lodash _.debounce防抖不生效原因,解决方案

https://blog.csdn.net/Delete_89x/article/details/122000444

 

问题代码:

<el-input
    v-model="slotProps.form.condition"
    placeholder="请输入"
    @input="inputChange"
></el-input>

...

load() {
      // 加载列表
},
// 问题处 inputChange() {
  debounce(this.load())
},

 

封装的debonce函数:

/**
 * 防抖函数 短期内大量触发同一事件,只会执行最后触发的一次
 * @param {Function} fn 需要防抖的函数
 * @param {Number} delay 毫秒,防抖期限值
 */
export const debounce = (fn, delay = 500) => {
  let timer = null;
  return function () {
    if (timer) {
      clearTimeout(timer);
    }
    timer = setTimeout(() => {
      fn.apply(this, arguments);
    }, delay);
  };
};

 

原因:debounce()返回的是一个函数,一个完成的执行应该是:debounce()(),问题代码直接单纯的调用一次,拿到了返回函数,但是并没有执行

解决方法:执行返回的函数

 

修改后的代码:

/**
 * inputChange拿到debounce()的返回结果 - 函数
 * 这样input事件触发的时候就直接是debounce()()了,所以是可以正常执行的
 */
inputChange: debounce(function () { // 注意,不要在debounce里写箭头函数,否则this的指向就是undefined,而不是Vue实例对象
      this.load();
}) 

  

 

标签:load,防抖,vue,函数,debounce,timer
From: https://www.cnblogs.com/linjiangxian/p/17646293.html

相关文章

  • vue中export default data()外面的数据如何通过$t获取动态值
    如果将数据放到外面的`const`中,而不是在Vue组件的`data`选项中,那么无法直接通过`$t`方法来获取翻译文件的值。因为`$t`方法是Vue-i18n插件提供的实例方法,需要在Vue组件中使用。如果你想在外部使用`$t`方法来获取翻译文件的值,可以将Vue-i18n的实例导出,并在外部文件中引入该实例来......
  • 在springboot项目中部署vue打包的dist以及刷新遇到404的解决方法
    一、在springboot项目中部署dist新建一个springboot项目,并将dist复制到resources目录下面,同时在application.yml添加配置即可,操作结果如下图所示: 添加的配置代码如下:spring:web:resources:static-locations:"classpath:/dist"二、部署好之后刷新遇到404......
  • 解决vueH5微信公众号扫一扫调用失败问题
    所使用的是importwxfrom'weixin-js-sdk'首先保证签名,域名配置等开发配置没有问题在开发工具当中显示没有问题一到真机测试就不行往下看      特别注意所需关键信息存在本地缓存中   ......
  • Vue 中请求同步执行解决方案
    有很多小伙伴在使用Vue的时候都会遇到一种情况,form表单修改回显时,某个下拉框里的内容回显乱码,这是因为Vue是的请求方法是异步请求:简单来说,form表单内容先获取了出来,而项目阶段的下拉框随后才获取出来//表单<el-col:span="12"> <el-form-item:label="$t('项目阶段')"prop=......
  • Web 国际化:新增越南语语系(vue i18n)
     前提:1.在src/locales文件夹中,新增vi.json文件背景:1.vue步骤:1.在main.js中,importVueI18nfrom'vue-i18n'Vue.use(VueI18n)consti18n=newVueI18n({locale:localStorage.getItem('lang')||'zh',messages:{ .........
  • Vue的组件data为什么必须是一个函数?
    vue中的data必须是函数是为了保证组件的独立性和可复用性。实例是通过构造函数来创建的,每个构造函数可以new多个实例,每个实例都会继承原型上的方法和属性,在vue中,一个vue组件就是一个vue实例,当一个组件被复用多次,就会创建多个实例。如果data是对象,那么被多次复用的这个组件,在某......
  • Vue Router
    什么是路由路由就是URL地址,地址不同,则显示的页面内容不同,路由分为前端路由和后端路由,Vue属于前端框架,因此我们讲解的路由也是前端路由。Vue是单页面应用程序,通过hash(#)来实现不同页面之间的切换。什么是单页面应用程序?通俗地讲就是不需要刷新页面,所有组件都在一个页面上的应用......
  • Vue 项目性能优化实践
    Vue已经成为前端必备利器了,Vue首页加载速度慢是很常见的问题,dist文件的体积差不多都在10m左右,解决方式也有很多,最简单的方式增加服务器的配置性能,当然在预算有限的情况下,如果通过优化来提升速度呢。比如在一台普通配置服务器上,差不多加载速度在15s左右,那是没办法接受的,不管是用......
  • vue通讯的几种方式
    1.props和$emit。父组件向子组件传递数据是通过props传递的,子组件传递给父组件是通过$emit触发事件来做到的。2. 父组件中通过provide来提供变量,然后在子组件中通过inject来注入变量。3.$refs获取组件实例。4.envetBus兄弟组件数据传递,这种情况下可以使用事件总线的方......
  • 使用VuePress打造的LearnData知识库帮助我更好地学习和传播 - 从笔记到分享
    在当今快节奏的社会中,技术变化日新月异。作为一名技术博客站长,我深切感受到了学习和传播知识的重要性。为了更好地满足读者的需求,我决定采用VuePress搭建一个功能强大且易于维护的知识库平台,名为LearnData。本文将介绍我如何利用VuePress构建LearnData,并展示一些相关的代码示例。......