这篇文章主要介绍“vue怎么实现lodash的debounce防抖”,在日常操作中,相信很多人在vue怎么实现lodash的debounce防抖问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue怎么实现lodash的debounce防抖”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
事情起因在:我使用element ui框架里的远程搜索框,在单选时,组件内部已经做了防抖,query是在一段时间内的字符串。但是在多选时,并没有做防抖,而是每输入一个字符都要向后台发一次请求,所以必须防抖,官方推荐使用lodash的debounce
在解决这个问题时,我遇到的坎儿主要有以下:
我首先在项目里用npm安装lodash,先全局安装,然后安装到项目
npm install -g lodash npm install --save lodash
安装后,我就在我要用防抖的组件里,引入lodash
var lodash = require('lodash');
以下就开始了走弯路
我百度后,查询到debounce总和keyup一起使用,所以我就在我的搜索框里绑定了keyup事件,但是绑定的事件并没有生效,通过查询得知,在element ui封装了input,所以要在后面加上.native才可以覆盖原来的事件
<el-select v-model="AddCandidateFrom.follow_hr" filterable multiple placeholder="请选择跟进HR" @keyup.native="getRemoteFollow" :loading="followLoading" class="select-item"> <el-option v-for="item in followOption" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select>
keyup成功绑定事件后,我发现得到的结果并不是我想要的,因为keyup绑定事件里得到的参数是我在键盘里输入的一个字符,但我想要得到的是输入后的整个字符串。所以我就又开始使用watch监听this.AddCandidateFrom.follow_hr
监听this.AddCandidateFrom.follow_hr后,我发现并没有用,因为它代表的是多选框中已经选中了的字符串,正在输入的字符串不会记录进去,所以我又回退到使用远程搜索本身的方法,绑定remote-methods
<el-select v-model="AddCandidateFrom.follow_hr" filterable multiple remote placeholder="请选择跟进HR" :remote-method="getRemoteFollow" :loading="followLoading" class="select-item"> <el-option v-for="item in followOption" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select>
绑定了remote-method方法后,我就使用传统的方法定义绑定的方法(),没有使用es6简写的方法,这是因为,使用lodash.debounce返回的是一个函数。如果有参数,则在function空的形参列表里加入
getRemoteFollow: lodash.debounce(function () { console.log('111'); }, 300),
Vue是一套用于构建用户界面的渐进式JavaScript框架,Vue与其它大型框架的区别是,使用Vue可以自底向上逐层应用,其核心库只关注视图层,方便与第三方库和项目整合,且使用Vue可以采用单文件组件和Vue生态系统支持的库开发复杂的单页应用。
到此,关于“vue怎么实现lodash的debounce防抖”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。