vue 事件防抖,vue使用防抖函数

  vue 事件防抖,vue使用防抖函数

  本文主要介绍Vue中防抖和节流的使用,以及由此指出的问题。有很好的参考价值,希望对大家有所帮助。如有错误或不足之处,请不吝赐教。

  

目录

  使用防抖和节流,这就点出了问题。一顿饭的操作之后,用防抖功能来接坑。正常写作用Vue写。用Vue的手表防抖速记。

  

使用防抖与节流,及this指向问题

  最近项目遇到了防抖节流的问题,针对这个指出的问题搜索了很多文章。最后,我们不得不采用一种非常低级的方法。

  数据中的IsFirst定义为1。

  如果(this.isFirst 2){

  this.isFirst=2

  setTimeout(()={

  this.isFirst=1

  }, 1000)

  }

  这形成了错误的节流。

  但是我们怎么能屈服于这种写作呢?

  在vue项目中继续探索带封闭的防抖节流。

  

一顿操作后

  常数延迟=(function () {

  让超时

  return(回调,毫秒)={

  if(超时)clearTimeout(超时)

  让callNow=!超时

  timeout=setTimeout(()={

  超时=未定义

  },毫秒)

  if (callNow) callback.apply(this,[callback,ms])

  }

  })()

  导出默认值{

  方法:{

  延迟(()={

  //做点什么

  }, 1000)

  }

  }

  通过立即执行function方法,可以获得全局this。

  

使用防抖函数所遇见的坑

  以前防抖和节流直接用js写。使用vue进行组件开发后,有几点需要注意。

  

正常写法

  功能去抖(func,delay) {

  让超时

  返回函数(){

  设上下文=this

  设args=arguments

  如果(超时){

  clearTimeout(超时)

  }

  timeout=setTimeout(()={

  func.apply(上下文,参数)

  },延迟)

  }

  }

  

使用

  功能变化(容量、数据){

  去抖(()={

  console.log(更改,卷,数据);

  }, 500)

  }

  

Vue中写法使用

  在注意:vue中使用时,需要定义超时。同时,在防抖功能中,这个的方向发生了变化,需要在返回之前获取Vue实例。这时候如果直接用,还是不行。只要调试,就会发现去抖返回的func不进去,需要手动执行(加括号)。

  data() {

  返回{

  超时:空

  }

  }

  更改(卷、数据){

  this.debounce(()={

  console.log(更改,卷,数据)

  }, 500)

  },

  去抖(功能,延迟){

  context=this//这个点变了,需要提出来。

  让args=arguments

  返回函数(){

  if (context.timeout) {

  clearTimeout(context.timeout)

  }

  context . time out=setTimeout(()={

  func.apply(上下文,参数)

  },延迟)

  }()//注:我加了()

  }

  

Vue中的watch的防抖简写

  watchObj: {

  处理器(val) {

  让这个=这个

  clearTimeout(this.timeout)

  this.timeout=setTimeout(()={

  _this.handlerData(val)

  }, 500)

  }

  }

  以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: