Keep scroll position when scrolled down and new content is added
This commit is contained in:
parent
23fc424b7a
commit
4a6cc46e81
|
@ -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;
|
||||||
|
|
||||||
|
|
Reference in New Issue