vue中的.passive修饰符
Posted llcdxh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue中的.passive修饰符相关的知识,希望对你有一定的参考价值。
一、passive作用
详情请参考MDN(https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener)中关于addEventListener中的第三个参数;表示 listener
永远不会调用 preventDefault()。如果 listener 仍然调用了这个函数,客户端将会忽略它并抛出一个控制台警告。
二、原理
由于 touchstart 事件对象的 cancelable 属性为 true,也就是说它的默认行为可以被监听器通过 preventDefault() 方法阻止,那它的默认行为是什么呢,通常来说就是滚动当前页面(还可能是缩放页面),如果它的默认行为被阻止了,页面就必须静止不动。但浏览器无法预先知道一个监听器会不会调用 preventDefault(),它能做的只有等监听器执行完后再去执行默认行为,而监听器执行是要耗时的,有些甚至耗时很明显,这样就会导致页面卡顿。视频里也说了,即便监听器是个空函数,也会产生一定的卡顿,毕竟空函数的执行也会耗时。(这句话来源:https://www.cnblogs.com/ziyunfei/p/5545439.html)
三、vue中的passive修饰符作用
该修饰符表示就是设置{passive:true},表示处理事件函数中不会调用preventDefault函数,就会减少了额外的监听,从而提高了性能;所以不能和.prevent修饰符一同使用,否则浏览器会报错。
以上是关于vue中的.passive修饰符的主要内容,如果未能解决你的问题,请参考以下文章
VUE事件修饰符.passive.capture.once实现原理——重新认识addEventListener方法