vue中使用 lodash Debounce防抖不生效原因

最近项目需要做这样一个需求:基于element-ui框架的vue项目,输入input框实现实时搜索后台响应的数据。但用户每次按下键盘就发送请求会导致系统性能不好等问题,这时需要考虑到用防抖去解决这个问题。所以我考虑使用输入框监听+lodash库https://www.lodashjs.com/docs/lodash.debounce的防抖来实现。

步骤简单:首先引入+使用

import {debounce} from 'lodash';
<el-form-item label="" prop="">
   <el-input
       placeholder=""
       v-model="formData.keyword"
       @input.native="change"      //注意使用elementUI组件要加上.native
   ></el-input>
 </el-form-item>
methods:{
	change:
	    debounce(()=>{
	      console.log(1111);
	      //todo
	    }, 500),
	//下面这种方式是不可行的,debounce返回了一个函数
	changes(){
      debounce(function(){
        console.log(1111)
      }, 500)      
    },
 }
 

这里要特别注意函数change的写法,必须这种change: 的写法,如果要使用change()要使用调用的方式,但最终有调用debounce的函数还是要另一种写法。

 @keyup.native="search"></el-input>
methods: {  
      // 加载到原型链上的lodash,在getRemote后取不到
    // 注意,这里debounce中的第一个参数,不能写成箭头函数,否则,取不到this
   getRemote: _.debounce(function () {
     console.log(111)
   }, 1000),
   search () {
     this.getRemote()
   }
 }

vue3中也有提及debounce的使用,感兴趣的可以去看看~
https://v3.vuejs.org/guide/data-methods.html#methods
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值