在 onWheel 事件中使用 event.preventDefault 时,如何规避 reactjs 中的“被动事件监听器”

Posted

技术标签:

【中文标题】在 onWheel 事件中使用 event.preventDefault 时,如何规避 reactjs 中的“被动事件监听器”【英文标题】:How can I circumvent "passive eventListeners" in reactjs when using event.preventDefault within an onWheel event 【发布时间】:2019-09-25 08:23:07 【问题描述】:

我试图在 onWheel 事件中阻止默认设置,以使用户滚动到某些元素的一侧而不是向下滚动。当我使用 e.preventDefault 时,我不断收到错误消息:[Intervention] Unable to preventDefault insidepassive event listener due to target being treated aspassive.

到目前为止,我似乎只找到了禁用错误消息的方法。

调用函数的JSX:

    <Wrapper onWheel=(e) => (handleScroll(e))>

调用e.preventDefault()的函数:

  const handleScroll = (e) => 
    e.preventDefault();
    console.info(e.currentTarget);
    const delta = Math.max(-1, Math.min(1, (e.deltaY || -e.detail)));
    e.currentTarget.scrollLeft += delta*40;
  ;

【问题讨论】:

【参考方案1】:

我相信您可以通过手动注册 wheel 事件侦听器来解决此问题。使用ref 获取对您输入的DOM 元素的引用,并在componentDidMountuseEffect 挂钩中调用addEventListener

【讨论】:

以上是关于在 onWheel 事件中使用 event.preventDefault 时,如何规避 reactjs 中的“被动事件监听器”的主要内容,如果未能解决你的问题,请参考以下文章

常见事件总结

兼容各浏览器的鼠标滚动事件写法

关于浏览器滚动的兼容性问题以及事件绑定

jQuery在拖动时使用右键单击旋转div

停止提交表单,直到在 ajax 中打开模式

在 Python ***中包含运行时依赖项