Reactjs 根据ie上的滚动位置更改状态

Reactjs 根据ie上的滚动位置更改状态,reactjs,internet-explorer,Reactjs,Internet Explorer,我需要按滚动位置向div添加或删除一个类。所以我在文档滚动事件中添加了一个侦听器来更改状态 componentDidMount() { document.addEventListener('scroll', function (event) { const isPassedTop = window.pageYOffset > 100; if (isPassedTop !== this.state.isPassedTop) { this.se

我需要按滚动位置向div添加或删除一个类。所以我在文档滚动事件中添加了一个侦听器来更改状态

componentDidMount() {
    document.addEventListener('scroll', function (event) {
      const isPassedTop = window.pageYOffset  > 100;
      if (isPassedTop !== this.state.isPassedTop) {
        this.setState({ isPassedTop: isPassedTop })
      }
    }, true);
}
这段代码在chrome上运行,但在ie上表示对象不支持属性或方法“setState” 我可以使用jquery在那里添加或删除类,但我正在寻找一种按状态添加或删除类的方法。
有人知道如何在跨浏览器上执行此操作吗?

最好的方法是创建一个绑定函数,以便您稍后可以引用它以在卸载时删除侦听器,类似于以下内容:

类Foo扩展组件{ 构造器{ 超级作物; this.handleScrollChange=this.handleScrollChange.bindthis; } 无柄换刀{ 常量isPassedTop=window.pageYOffset>100; 如果isPassedTop!==this.state.isPassedTop{ this.setState{isPassedTop:isPassedTop} } } 组件安装{ document.addEventListener'scroll',this.handleScrollChange,true; } 组件将卸载{ document.removeEventListener'scroll',this.handleScrollChange; } }