在react中,因为有设计到监听当前页面的滚动情况进行一下需求的处理
//在componentDidMount,进行scroll事件的注册,绑定一个函数,让这个函数进行监听处理
componentDidMount() {
window.addEventListener('scroll', this.bindHandleScroll)
}
bindHandleScroll=(event)=>{
// 滚动的高度
const scrollTop = (event.srcElement ? event.srcElement.documentElement.scrollTop : false)
|| window.pageYOffset
|| (event.srcElement ? event.srcElement.body.scrollTop : 0);
// 判断用户当前是否进行了横向滚动,如果用户发生了横向滚动,则设置元素为static
const scrollLeft = (event.srcElement ? event.srcElement.documentElement.scrollLeft : false)
|| window.pageXOffset
|| (event.srcElement ? event.srcElement.body.scrollLeft : 0);
if(scrollLeft>0){
this.setState({
positionType:'static'
})
}else{
this.setState({
positionType:'fixed'
})
}
}
//在componentWillUnmount,进行scroll事件的注销
componentWillUnmount(){
window.removeEventListener('scroll', this.bindHandleScroll);
}