• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

浅析Vue 防抖与节流的使用

vue 搞代码 4年前 (2022-01-08) 23次浏览 已收录 0个评论

防抖节流就是使用定时器 来实现我们的目的。这篇文章通过实例代码给大家介绍vue防抖与节流的使用,感兴趣的朋友跟随小编一起看看吧

在一个电影项目中,我想在电影的列表中,保存下拉的当前位置,防止你切换页面后,再切换回当前的电影列表页,他就又回到电影的第一条数据。

这时候,我不想每次只要滑动一点,就保存当前位置,我想隔一段时间,保存一次,这时候,就可以使用防抖和节流。

概念

说白了, 防抖节流就是使用定时器 来实现我们的目的。

防抖(debounce):

在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。

典型的案例就是输入框搜索:输入结束后n秒才进行搜索请求,n秒内又输入的内容,则重新计时。

节流(throttle):

规定在一个单位时间内,只能触发一次函数,如果这个单位时间内触发多次函数,只有一次生效。

典型的案例就是鼠标不断点击触发,规定在n秒内多次点击只生效一次。

用法

防抖(debounce)

下拉列表,隔一段时间保存当前下拉位置。

我们可以在 mounted 钩子中实现我们的防抖:

 // 防抖 定时器 let timer; //list就是电影列表 ref="list" $el获取DOM元素 this.$refs.list.$el.addEventListener("scroll", e => { console.log("---->",e.target.scrollTop) //不使用防抖 if (timer) { //清空timer clearTimeout(timer); } timer = setTimeout(() => { console.log(e.target.scrollTop) //使用防抖 //在sessionStorage中保存当前下拉位置 // sessionStorage.setItem("position", e.target.scrollTop); }, 75); //75mm为最佳 });

效果演示(隔一段时间保存当前位置):

加 —-> 为不使用防抖,没加的则使用防抖

输入框搜索隔段本文来源gaodai#ma#com搞@@代~&码网^时间进行搜索请求:

  <div> </div>

 

节流(throttle)

在n秒内点击多次,只有一次生效。

  <div> <button>按钮</button></div>

效果演示:

 

补充

当然,也可以对这两个方法进行封装,以便在多处使用。

 /** * 函数防抖 (只执行最后一次点击) */ export const Debounce = (fn, t) => { let delay = t || 500; let timer; console.log(fn) console.log(typeof fn) return function () { let args = arguments; if(timer){ clearTimeout(timer); } timer = setTimeout(() => { timer = null; fn.apply(this, args); }, delay); } }; /* * 函数节流 */ export const Throttle = (fn, t) => { let last; let timer; let interval = t || 500; return function () { let args = arguments; let now = +new Date(); if (last && now - last  { last = now; fn.apply(this, args); }, interval); } else { last = now; fn.apply(this, args); } } };

总结

以上所述是小编给大家介绍的Vue 防抖与节流的使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对gaodaima搞代码网网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

以上就是浅析Vue 防抖与节流的使用的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:浅析Vue 防抖与节流的使用

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址