【发布时间】:2016-10-16 07:32:46
【问题描述】:
我正在尝试将 onscroll 事件处理程序添加到特定的 dom 元素。看这段代码:
class ScrollingApp extends React.Component {
...
_handleScroll(ev) {
console.log("Scrolling!");
}
componentDidMount() {
this.refs.list.addEventListener('scroll', this._handleScroll);
}
componentWillUnmount() {
this.refs.list.removeEventListener('scroll', this._handleScroll);
}
render() {
return (
<div ref="list">
{
this.props.items.map( (item) => {
return (<Item item={item} />);
})
}
</div>
);
}
}
代码非常简单,如您所见,我想处理 div#list 滚动。当我运行这个示例时,它不起作用。所以我尝试直接在render方法上绑定this._handleScroll,也不管用。
<div ref="list" onScroll={this._handleScroll.bind(this)> ... </div>
所以我打开了 chrome 检查器,直接添加了 onscroll 事件:
document.getElementById('#list').addEventListener('scroll', ...);
它正在工作!我不知道为什么会这样。这是 React 的错误还是什么?还是我错过了什么?任何设备都会非常感激。
【问题讨论】:
-
它对我有用 (webpackbin.com/V1ECCW5Vb),在块内滚动,然后单击页面顶部的“日志”按钮以查看日志。
标签: reactjs