javascript - 对滚动使用react被动事件处理程序

标签 javascript reactjs events event-handling dom-events

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

Consider marking event handler as 'passive' to make the page more responive.

这是我阅读该事件的地方:

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

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

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: passive}

我在编辑器中收到以下错误:

Argument type {passive: boolean} is not assignable to parameter type boolean

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

感谢任何帮助!

最佳答案

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

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

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

关于javascript - 对滚动使用react被动事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39617508/

相关文章:

javascript - 缺少 "Use strict"语句

javascript - 单击按钮不起作用 -> 转换

javascript - Brightcove 视频模板加载处理程序未触发

javascript - 使用变换 : scale is not appropriately hiding a div

reactjs - React hooks,如何在组件卸载时触发一些逻辑

Jquery添加href而不是click事件

events - FullCalendar 事件删除 UI 的建议

javascript - 手动将 es6 箭头函数转换为 es5?

javascript - 同步迭代在 JavaScript 中不起作用

javascript - 无法在 console.log 上获取音频的当前时间