2016-08-16 105 views
2

我正在构建一个应用程序(ES6),我很好奇什么是正确的方法来抓住滚动上/下滚动事件?React-listen向上/向下滚动?

我试过(npm)安装react-scroll-listener,但我无法让它与我的ES6类一起工作。

基本上我想:如果向上滚动,请执行此操作;如果向下滚动,请执行其他操作。

import React from 'react'; 
import config from '../config'; 
import StaticImageList from '../Common/StaticImageList'; 
import ScrollListener from 'react-scroll-listener'; 

class Album extends React.Component { 
    constructor(props){ 
     super(props); 

    } 
    myScrollStartHandler(){ 
     console.log('Scroll start'); 

    } 
    myScrollEndHandler(){ 
     console.log('Scroll end 300ms(default)'); 
    } 
    componentDidMount(){ 
     scrollListener.addScrollHandler('body', myScrollStartHandler, myScrollEndHandler); 
    } 
    render(){ 
     return <StaticImageList />; 
    } 
}; 

export default Album; 

回答

2

这是一般建议对挂接到任何听众:

附上componentDidMount的东西,在卸装componentWillUnmount

class Whatever extends Component { 
    componentDidMount() { 
    window.addEventListener('scroll', this.handleScroll) 
    } 

    componentWillUnmount() { 
    window.removeEventListener('scroll', this.handleScroll) 
    } 

    handleScroll(event) { 
    // do something like call `this.setState` 
    // access window.scrollY etc 
    }) 
} 
+0

谢谢!完善。从向下滚动区分滚动和向上滚动的最佳跨浏览器方式是什么? –

+0

只记录scrollY值并查看下一个是否小于或大于 – azium

+2

如何在隐藏溢出的元素上捕获轮子事件? (即无需滚动,但仍希望将轮子事件用作触发器)。 –