反应被动事件处理程序不工作

时间:2016-09-21 13:09:55

标签: javascript events reactjs javascript-events event-handling

我的反应中有一个滚动的事件处理程序,我试图让它变得被动。但它不起作用,我一直在我的控制台中收到这个警告:

  

考虑将事件处理程序标记为“被动'使页面更多   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}

我的编辑器中出现以下错误 参数类型boolean

不能赋予参数类型{passive:boolean}

任何人都知道我在做错了什么?

感谢任何帮助!

非常感谢提前:)

2 个答案:

答案 0 :(得分:0)

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

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

希望这可以帮助将来的某个人!

答案 1 :(得分:-1)

没有任何理由让滚动侦听器被动! 请仔细阅读文档 - 任何触摸轮&滚动div中的单击侦听器必须是被动的 - 它是被动侦听器的主要目标