最近在用 react,hooks 配合 functional component 写起来非常的有禅意。
前两天遇见这个需求:
需要在自定义 prompt 出来的时候禁止页面滑动。

自然想到在 onTouchMove 和 onTouchStart 的时候去 preventDefault,
但是 Chrome 直接报错了:
Unable to preventDefault inside passive event listener
如果是 addEventListener('touchstart', fn, {passive: true}) 的 fn 里面尝试 preventDefault 就会报这个错。
事件监听时的 passive option 有什么用呢,能大幅提高滚动性能,前提是产品设计保证了不会阻止滚动。
所以应该是 react 在设置 onTouch* 系列监听的时候,设置了这个 passive?
查了一下,原来是 chrome 56 开始的一个 feature
With this change touchstart and touchmove listeners added to the document will default to passive:true (so that calls to preventDefault will be ignored)..
最近在用 react,hooks 配合 functional component 写起来非常的有禅意。
前两天遇见这个需求:
需要在自定义 prompt 出来的时候禁止页面滑动。
自然想到在 onTouchMove 和 onTouchStart 的时候去 preventDefault,
但是 Chrome 直接报错了:
Unable to preventDefault inside passive event listener如果是
addEventListener('touchstart', fn, {passive: true})的 fn 里面尝试preventDefault就会报这个错。事件监听时的 passive option 有什么用呢,能大幅提高滚动性能,前提是产品设计保证了不会阻止滚动。
所以应该是 react 在设置 onTouch* 系列监听的时候,设置了这个
passive?查了一下,原来是 chrome 56 开始的一个 feature