当前位置: 首页 > 知识库问答 >
问题:

用于滚动的react被动事件处理程序

祁杰
2023-03-14

我的react中有一个滚动的事件处理程序,我正试图使它成为被动的。但它不起作用,我在控制台中不断收到以下警告:

将事件处理程序标记为“被动”以使页面更加响应。

下面是我阅读事件的地方:

bindEventListeners()
{
    EventContainer.readWindowEvent('scroll', this.onScroll);
}

这是我的EventContainer中的readWindowEvent函数。js文件:

static readWindowEvent(slug, callback, passive = true)
    {
        let result = null;

        let allowed = this.getAllowedWindowEventListeners().indexOf(slug) != -1;

        if (!allowed) {
            result = console.error(
                'You cannot register ' + slug + ' on the window. Allowed events: ' +
                this.getAllowedWindowEventListeners().join(', ')
            )
        }

        if (allowed) {
            result = window.addEventListener(
                slug,
                callback,
                {passive: passive}
            );
        }

        return result;
    }

在这一行:

{被动:被动}

我得到以下错误在我的编辑器:

参数类型{passive:boolean}不可分配给参数类型boolean

有人知道我做错了什么吗?

任何帮助都很感激!

共有2个答案

郎欣然
2023-03-14

没有任何理由让滚动监听器被动!请仔细阅读文档-任何触摸轮

左丘兴生
2023-03-14

现在回答可能有点晚,但我也有同样的问题。解决方法是对传入的对象使用any-类型:

let passiveObject: any = { passive: true }
obj.addEventListener(evt, func, passiveObject)

希望这对将来的人有帮助!

 类似资料:
  • 在React中处理滚动位置的正确方法是什么?我真的很喜欢平滑滚动,因为更好的用户体验。因为在React中操作DOM是一个反模式,所以我遇到了一个问题:如何平滑地滚动到某个位置/元素?我通常会更改元素的scrollTop值,但这是对DOM的操作,这是不允许的。 杰斯宾 代码: 如何以反应的方式实现这一点?

  • 主要内容:实例,向事件处理程序传递参数React 元素的事件处理和 DOM 元素类似。但是有一点语法上的不同: React 事件绑定属性的命名采用驼峰式写法,而不是小写。 如果采用 JSX 的语法你需要传入一个函数作为事件处理函数,而不是一个字符串(DOM 元素的写法) HTML 通常写法是: React 中写法为: 在 React 中另一个不同是你不能使用返回 false 的方式阻止默认行为, 你必须明确使用 preventDefa

  • 在使滚动系列事件正常运行方面存在问题(根本不符合设计)。已经浏览了所有关于此的文章、代码建议和其他帮助主题,但没有人能够解释为什么此示例根本不起作用: 基本页面html: 好的,如果复制粘贴,则需要替换包含文件,并且版本可能不同。对这种行为表示怀疑。当我取出jquery时。移动包含该脚本按预期工作,每当滚动位置改变时,都会将滚动注释记录到控制台中。 当我包含jquery.mobile页面加载时它会

  • 是否可以为StyleClassedTextArea(以及其他RichTextFx系列窗格)注册滚动侦听器? 你能给我举个例子吗? TextArea的常用方法不起作用。

  • 问题内容: 我有一个用jQuery 方法动态生成的with : 包含一些输入元素,它们被加载到modal中。 使用jQuery的方法,我可以在事件触发后捕获输入值,但是当将元素动态添加到模式div时,当用户输入文本时事件不会触发。 哪种jQuery方法支持处理由动态创建的元素触发的事件? 用于创建新输入元素的代码为: 捕获用户值的代码是: 第二个代码块似乎适用于原始元素,但不会由新的动态生成的元素