写代码过程中,发现在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
}