Prevent unneeded getScrollPosition DOM calls during scroll

scrollable_list
Curtis ROck 2020-10-10 20:21:41 -05:00
rodzic 0a4485e244
commit 385d67ba89
1 zmienionych plików z 10 dodań i 4 usunięć

Wyświetl plik

@ -33,6 +33,7 @@ export default class ScrollableList extends PureComponent {
state = {
cachedMediaWidth: 250, // Default media/card width using default theme
updatedScrollBottom: false, // Prevents getScrollPosition DOM calls if false
};
intersectionObserverWrapper = new IntersectionObserverWrapper();
@ -92,8 +93,13 @@ export default class ScrollableList extends PureComponent {
}
getScrollPosition = () => {
if (this.documentElement && (this.documentElement.scrollTop > 0 || this.mouseMovedRecently)) {
return { height: this.documentElement.scrollHeight, top: this.documentElement.scrollTop };
if (this.state.updatedScrollBottom) {
this.setState({ updatedScrollBottom: false });
if (this.documentElement && (this.documentElement.scrollTop > 0 || this.mouseMovedRecently)) {
return { height: this.documentElement.scrollHeight, top: this.documentElement.scrollTop };
} else {
return null;
}
} else {
return null;
}
@ -101,7 +107,7 @@ export default class ScrollableList extends PureComponent {
updateScrollBottom = (snapshot) => {
const newScrollTop = this.documentElement.scrollHeight - snapshot;
this.setState({ updatedScrollBottom: true });
this.setScrollTop(newScrollTop);
}
@ -253,8 +259,8 @@ export default class ScrollableList extends PureComponent {
saveHeightKey={trackScroll ? `${this.context.router.route.location.key}:${scrollKey}` : null}
>
{React.cloneElement(child, {
getScrollPosition: this.getScrollPosition,
updateScrollBottom: this.updateScrollBottom,
getScrollPosition: this.getScrollPosition,
cachedMediaWidth: this.state.cachedMediaWidth,
cacheMediaWidth: this.cacheMediaWidth,
})}