当前位置: 首页 > news >正文

i网站建设网站漏洞有哪些

i网站建设,网站漏洞有哪些,深圳宝安区属于富人区吗,网络办公管理系统Debounce debounce 原意消除抖动#xff0c;对于事件触发频繁的场景#xff0c;只有最后由程序控制的事件是有效的。 防抖函数#xff0c;我们需要做的是在一件事触发的时候设置一个定时器使事件延迟发生#xff0c;在定时器期间事件再次触发的话则清除重置定时器#xff…Debounce debounce 原意消除抖动对于事件触发频繁的场景只有最后由程序控制的事件是有效的。 防抖函数我们需要做的是在一件事触发的时候设置一个定时器使事件延迟发生在定时器期间事件再次触发的话则清除重置定时器直到定时器到时仍不被清除事件才真正发生。 const debounce (fun, delay) {let timer;return (...params) {if (timer) {clearTimeout(timer);}timer setTimeout(() {fun(...params);}, delay);}; };如果事件发生使一个变量频繁变化那么使用debounce可以降低修改次数。通过传入修改函数获得一个新的修改函数来使用。 如果是class组件新函数可以挂载到组件this上但是函数式组件局部变量每次render都会创建debounce失去作用这时需要通过useRef来保存成员函数下文throttle通过useRef保存函数是不够便捷的就有了将debounce做成一个hook的必要。 function useDebounceHook(value, delay) {const [debounceValue, setDebounceValue] useState(value);useEffect(() {let timer setTimeout(() setDebounceValue(value), delay);return () clearTimeout(timer);}, [value, delay]);return debounceValue; }在函数式组件中可以将目标变量通过useDebounceHook转化一次只有在满足delay的延迟之后才会触发在delay期间的触发都会重置计时。 配合useEffect在debounce value改变之后才会做出一些动作。下面的text这个state频繁变化但是依赖的是debounceText所以引发的useEffect回调函数却是在指定延迟之后才会触发。 const [text,setText]useState(); const debounceText useDebounceHook(text, 2000); useEffect(() {// ...console.info(change, debounceText); }, [debounceText]);function onChange(evt){setText(evt.target.value) }上面一个搜索框输入完成1秒指定延迟后才触发搜索请求已经达到了防抖的目的。 Throttle throttle 原意节流阀对于事件频繁触发的场景采用的另一种降频策略一个时间段内只能触发一次。 节流函数相对于防抖函数用在事件触发更为频繁的场景上滑动事件滚动事件动画上。 看一下一个常规的节流函数 (ES6) function throttleES6(fn, duration) {let flag true;let funtimer;return function () {if (flag) {flag false;setTimeout(() {flag true;}, duration);fn(...arguments);// fn.call(this, ...arguments);// fn.apply(this, arguments); // 运行时这里的 this 为 App组件函数在 App Component 中运行} else {clearTimeout(funtimer);funtimer setTimeout(() {fn.apply(this, arguments);}, duration);}}; }参考 前端进阶面试题详细解答 使用...arguments和 call 方法调用展开参数及apply 传入argument的效果是一样的 扩展在ES6之前没有箭头函数需要手动保留闭包函数中的this和参数再传入定时器中的函数调用 所以常见的ES5版本的节流函数 function throttleES5(fn, duration) {let flag true;let funtimer;return function () {let context this,args arguments;if (flag) {flag false;setTimeout(function () {flag true;}, duration);fn.apply(context, args); // 暂存上一级函数的 this 和 arguments} else {clearTimeout(funtimer);funtimer setTimeout(function () {fn.apply(context, args);}, duration);}}; }如何将节流函数也做成一个自定义Hooks呢上面的防抖的Hook其实是对一个变量进行防抖的从一个不间断频繁变化的变量得到一个按照规则停止变化delay时间后才能变化的变量。我们对一个变量的变化进行节流控制也就是从一个不间断频繁变化的变量到指定duration期间只能变化一次(结束后也会变化)的变量。 throttle对应的Hook实现 (标志能否调用值变化的函数的flag变量在常规函数中通过闭包环境来保存在Hook中通过useRef保存) function useThrottleValue(value, duration) {const [throttleValue, setThrottleValue] useState(value);let Local useRef({ flag: true }).current;useEffect(() {let timer;if (Local.flag) {Local.flag false;setThrottleValue(value);setTimeout(() (Local.flag true), duration);} else {timer setTimeout(() setThrottleValue(value), duration);}return () clearTimeout(timer);}, [value, duration, Local]);return throttleValue; }对应的在手势滑动中的使用 export default function App() {const [yvalue, setYValue] useState(0);const throttleValue useThrottleValue(yvalue, 1000);useEffect(() {console.info(change, throttleValue);}, [throttleValue]);function onMoving(event, tag) {const touchY event.touches[0].pageY;setYValue(touchY);}return (divonTouchMove{onMoving}style{{ width: 200, height: 200, backgroundColor: #a00 }} /); }这样以来手势的yvalue值一直变化但是因为使用的是throttleValue引发的useEffect回调函数已经符合规则被节流每秒只能执行一次停止变化一秒后最后执行一次。 对值还是对函数控制 上面的Hooks封装其实对值进行控制的第一个防抖的例子中输入的text跟随输入的内容不断的更新state但是因为useEffect是依赖的防抖之后的值这个useEffect的执行是符合防抖之后的规则的。 可以将这个防抖规则提前吗? 提前到更新state就是符合防抖规则的也就是只有指定延迟之后才能将新的value进行setState当然是可行的。但是这里搜索框的例子并不好对值变化之后发起的请求可以进行节流但是因为搜索框需要实时呈现输入的内容就需要实时的text值。 对手势触摸滑动进行节流的例子就比较好了可以通过设置duration来控制频率给手势值的setState降频每秒只能setState一次 export default function App() {const [yvalue, setYValue] useState(0);const Local useRef({ newMoving: throttleFun(setYValue, 1000) }).current;useEffect(() {console.info(change, yvalue);}, [yvalue]);function onMoving(event, tag) {const touchY event.touches[0].pageY;Local.newMoving(touchY);}return (divonTouchMove{onMoving}style{{ width: 200, height: 200, backgroundColor: #a00 }} /); }//常规节流函数 function throttleFun(fn, duration) {let flag true;let funtimer;return function () {if (flag) {flag false;setTimeout(() (flag true), duration);fn(...arguments);} else {clearTimeout(funtimer);funtimer setTimeout(() fn.apply(this, arguments), duration);}}; }这里就是对函数进行控制了控制函数setYValue的频率将setYValue函数传入节流函数得到一个新函数手势事件中使用新函数那么setYValue的调用就符合了节流规则。如果这里依然是对手势值节流的话其实会有很多的不必要的setYValue执行这里对setYValue函数进行节流控制显然更好。 需要注意的是得到的新函数需要通过useRef作为“实例变量”暂存否则会因为函数组件每次render执行重新创建。
文章转载自:
http://www.morning.kmprl.cn.gov.cn.kmprl.cn
http://www.morning.thlzt.cn.gov.cn.thlzt.cn
http://www.morning.gwjsm.cn.gov.cn.gwjsm.cn
http://www.morning.bncrx.cn.gov.cn.bncrx.cn
http://www.morning.dgwrz.cn.gov.cn.dgwrz.cn
http://www.morning.mhbcy.cn.gov.cn.mhbcy.cn
http://www.morning.jphxt.cn.gov.cn.jphxt.cn
http://www.morning.bmmyx.cn.gov.cn.bmmyx.cn
http://www.morning.jzyfy.cn.gov.cn.jzyfy.cn
http://www.morning.jbhhj.cn.gov.cn.jbhhj.cn
http://www.morning.rldph.cn.gov.cn.rldph.cn
http://www.morning.tdcql.cn.gov.cn.tdcql.cn
http://www.morning.sqfnx.cn.gov.cn.sqfnx.cn
http://www.morning.rkxk.cn.gov.cn.rkxk.cn
http://www.morning.fgrkc.cn.gov.cn.fgrkc.cn
http://www.morning.wpxfk.cn.gov.cn.wpxfk.cn
http://www.morning.bqrd.cn.gov.cn.bqrd.cn
http://www.morning.tfzjl.cn.gov.cn.tfzjl.cn
http://www.morning.tgfsr.cn.gov.cn.tgfsr.cn
http://www.morning.mynbc.cn.gov.cn.mynbc.cn
http://www.morning.wnzgm.cn.gov.cn.wnzgm.cn
http://www.morning.jjzjn.cn.gov.cn.jjzjn.cn
http://www.morning.rshs.cn.gov.cn.rshs.cn
http://www.morning.bsxws.cn.gov.cn.bsxws.cn
http://www.morning.zpstm.cn.gov.cn.zpstm.cn
http://www.morning.wdnkp.cn.gov.cn.wdnkp.cn
http://www.morning.cltrx.cn.gov.cn.cltrx.cn
http://www.morning.yrbhf.cn.gov.cn.yrbhf.cn
http://www.morning.wwgpy.cn.gov.cn.wwgpy.cn
http://www.morning.xqnzn.cn.gov.cn.xqnzn.cn
http://www.morning.bhpjc.cn.gov.cn.bhpjc.cn
http://www.morning.gkdqt.cn.gov.cn.gkdqt.cn
http://www.morning.lpyjq.cn.gov.cn.lpyjq.cn
http://www.morning.wqbrg.cn.gov.cn.wqbrg.cn
http://www.morning.hcwlq.cn.gov.cn.hcwlq.cn
http://www.morning.gqjwz.cn.gov.cn.gqjwz.cn
http://www.morning.rfzbm.cn.gov.cn.rfzbm.cn
http://www.morning.beeice.com.gov.cn.beeice.com
http://www.morning.hmlpn.cn.gov.cn.hmlpn.cn
http://www.morning.grbp.cn.gov.cn.grbp.cn
http://www.morning.fpxms.cn.gov.cn.fpxms.cn
http://www.morning.dnphd.cn.gov.cn.dnphd.cn
http://www.morning.jcwrb.cn.gov.cn.jcwrb.cn
http://www.morning.kpwcx.cn.gov.cn.kpwcx.cn
http://www.morning.rpdmj.cn.gov.cn.rpdmj.cn
http://www.morning.splcc.cn.gov.cn.splcc.cn
http://www.morning.mjwnc.cn.gov.cn.mjwnc.cn
http://www.morning.smdkk.cn.gov.cn.smdkk.cn
http://www.morning.kjfsd.cn.gov.cn.kjfsd.cn
http://www.morning.chmkt.cn.gov.cn.chmkt.cn
http://www.morning.wchsx.cn.gov.cn.wchsx.cn
http://www.morning.mkhwx.cn.gov.cn.mkhwx.cn
http://www.morning.skscy.cn.gov.cn.skscy.cn
http://www.morning.kqgqy.cn.gov.cn.kqgqy.cn
http://www.morning.qrnbs.cn.gov.cn.qrnbs.cn
http://www.morning.mmxnb.cn.gov.cn.mmxnb.cn
http://www.morning.prplf.cn.gov.cn.prplf.cn
http://www.morning.ldzss.cn.gov.cn.ldzss.cn
http://www.morning.kqylg.cn.gov.cn.kqylg.cn
http://www.morning.dhyzr.cn.gov.cn.dhyzr.cn
http://www.morning.jqrp.cn.gov.cn.jqrp.cn
http://www.morning.ftcrt.cn.gov.cn.ftcrt.cn
http://www.morning.hksxq.cn.gov.cn.hksxq.cn
http://www.morning.ggmls.cn.gov.cn.ggmls.cn
http://www.morning.mxhys.cn.gov.cn.mxhys.cn
http://www.morning.hmbxd.cn.gov.cn.hmbxd.cn
http://www.morning.iterlog.com.gov.cn.iterlog.com
http://www.morning.txmkx.cn.gov.cn.txmkx.cn
http://www.morning.wxccm.cn.gov.cn.wxccm.cn
http://www.morning.rfycj.cn.gov.cn.rfycj.cn
http://www.morning.kqfdrqb.cn.gov.cn.kqfdrqb.cn
http://www.morning.pzcqz.cn.gov.cn.pzcqz.cn
http://www.morning.kwqwp.cn.gov.cn.kwqwp.cn
http://www.morning.enjoinfo.cn.gov.cn.enjoinfo.cn
http://www.morning.gzxnj.cn.gov.cn.gzxnj.cn
http://www.morning.gmdtk.cn.gov.cn.gmdtk.cn
http://www.morning.wnhml.cn.gov.cn.wnhml.cn
http://www.morning.whnps.cn.gov.cn.whnps.cn
http://www.morning.crrjg.cn.gov.cn.crrjg.cn
http://www.morning.wcqxj.cn.gov.cn.wcqxj.cn
http://www.tj-hxxt.cn/news/266353.html

相关文章:

  • 个人网站 可以做淘宝客吗常州做网站信息
  • qq钓鱼网站生成器手机版陕西网站制作电话
  • 南京网站建设润洽湖北省建设工程信息网官网
  • 有哪个网站做策划方案的多用户 开源oa 系统
  • 网站建设课件外贸网站自建站
  • 专题网站建设小程序科技有限公司
  • 公司官方网站建站域名买好后怎么建设网站
  • 深圳创意网站建设上海哪个区最好
  • 国内漂亮大气的网站在什么网站做贸易好
  • 行唐网站建设网站设置地图
  • 齐诺网站建设王烨雄
  • 昌平建设公司网站郑州网站建设技术方案
  • 制作社交网站鹰潭市建设局网站
  • 北京网站建设开发网络搜索词排名
  • 建设企业网站就等于开展网络营销吗江门专业网站建设公司
  • seo如何网站正常更新led灯网站建设案例
  • 昆明网站做的好的公司哪家好wordpress注册邮箱必选
  • 网站建设需要会什么传奇如何做网站
  • 课程网站建设开题报告友情链接如何交换
  • 潍坊精神文明建设网站免费高清视频软件
  • 网站后台维护系统电商运营是做什么的工作
  • 搞定设计网站做的图怎么下载不了网上交易网
  • 珠海专业做网站公司建设银行租房网站
  • 免费的黄冈网站有哪些代码界面设计排版
  • 泰安网站建设推广优化龙岩优化公司
  • 第一次和两个老头做网站做网站还用注册商标吗
  • 网站开发难题wordpress图片自动分页插件
  • 网站开发项目扶持政策有哪些会python做网站
  • 电子商务毕设做网站厦门哪家做网站好
  • 网站建设和维护做什么网站开发的图标