Keep scroll position when scrolled down and new content is added

rebase/4.0.0rc2
Eugen Rochko 2016-11-07 02:02:55 +01:00
parent 23fc424b7a
commit 4a6cc46e81
1 changed files with 12 additions and 0 deletions

View File

@ -38,11 +38,23 @@ const StatusList = React.createClass({
handleScroll (e) { handleScroll (e) {
const { scrollTop, scrollHeight, clientHeight } = e.target; const { scrollTop, scrollHeight, clientHeight } = e.target;
this._oldScrollPosition = scrollHeight - scrollTop;
if (scrollTop === scrollHeight - clientHeight) { if (scrollTop === scrollHeight - clientHeight) {
this.props.onScrollToBottom(); this.props.onScrollToBottom();
} }
}, },
componentDidUpdate (prevProps) {
if (prevProps.statusIds.size < this.props.statusIds.size && this._oldScrollPosition) {
const node = ReactDOM.findDOMNode(this);
if (node.scrollTop > 0) {
node.scrollTop = node.scrollHeight - this._oldScrollPosition;
}
}
},
render () { render () {
const { statusIds, onScrollToBottom, trackScroll } = this.props; const { statusIds, onScrollToBottom, trackScroll } = this.props;