react中window.addEventListener和window.removeEventListener的使用

写代码过程中,发现在react的tsx中绑定原生事件
window.addEventListener当前页面可以监听到事件,其他页面也可以监听到事件,这就会产生问题,比如A页面监听滚动事件,B页面不需要监听滚动事件,但是B页面也会触发,此时就会产生bug。
正确做法是在A页面绑定事件后,页面卸载的时候清除监听事件。

 constructor(props) {
    
    
    super(props);
    this.scrollHandler = this.handleScroll.bind(this);
  }
componentDidMount() {
    
    
    window.addEventListener('scroll', this.scrollHandler);
  }
  componentWillUnmount(){
    
    
    window.removeEventListener('scroll',this.scrollHandler);
  }
  handleScroll = () =>{
    
    
    let scrollTop = document.documentElement.scrollTop||document.body.scrollTop;
    this._handleScroll(scrollTop);
  }
  _handleScroll = (scrollTop) =>{
    
    
	//dosomething
  }

猜你喜欢

转载自blog.csdn.net/sunzhen15896/article/details/110313031