onScroll React无法触发

时间:2018-04-23 07:47:34

标签: reactjs scroll

为什么如果我使用onScroll反应版本16无法触发如何使其工作。因为我想使用onScroll而不是onWheel?。

import ReactDom from 'react-dom'

constructor(props) {
    super(props);
    this._fireOnScroll = this.fireOnScroll.bind(this);
}

fireOnScroll() {
    console.log('Fire!');
}

componentDidMount() {
    const elem = ReactDOM.findDOMNode(this.refs.elementToFire);
    elem.addEventListener('scroll', this._fireOnScroll, true);
}

componentWillUnmount() {
    const elem = ReactDOM.findDOMNode(this.refs.elementToFire);
    elem.removeEventListener('scroll', this._fireOnScroll);
}

render() {
    return (
        <div ref="elementToFire">
      <AnotherComponent imagesUrl={Array(100)}}>}
    </div>
</div>
    );
}

2 个答案:

答案 0 :(得分:1)

你的div是空的。 scroll仅在实际滚动确实发生时才会触发 因此,您的div需要小于其内容,并且需要显示滚动条。

有关工作示例,请参阅this pen

但是,没有理由使用ref。只需使用onScroll

<div style={{height: 75, width: 100, overflow:'scroll'}} onScroll={this.fireOnScroll}>

有关工作示例,请参阅this pen

答案 1 :(得分:0)

您的引用未正确分配给它应该是div <div ref = {this.elementToFire} > 如果不起作用,请尝试

const elem = ReactDOM.findDOMNode(this.refs.elementToFire.current);  同样来自你给出的代码哦猜你也错过了创建一个ref对象

this.elementToFire = React.createRef();

希望它能运作