Don't scroll to initial item if ContentOffset is provided

Summary:
The initialScrollIndex in VirtualizedList contains a performance optimization to start rendering the list at the index provided.

ContentOffset does not contain this optimization and there is currently no way to specify the first item in the list to start rendering without contentOffset being ignored.

This change makes it so that if both initialScrollIndex and ContentOffset are provided, the list will start rendering at the initialScrollIndex but ContentOffset will still be used to set the scroll position.

initialScrollIndex functionality will remain the same if ContentOffset is not provided.

Changelog: [Changed] VirtualizedList will use contentOffset for scroll position instead of initialScrollIndex if both are provided

Reviewed By: sahrens

Differential Revision: D21980172

fbshipit-source-id: 36d2d2bc360845ef02329d2b95a2cf14b91c2b0b
This commit is contained in:
Mark Verlingieri
2020-06-11 15:44:02 -07:00
committed by Facebook GitHub Bot
parent 952c03b99a
commit 3346ac7f96
+6 -4
View File
@@ -1491,10 +1491,12 @@ class VirtualizedList extends React.PureComponent<Props, State> {
this.props.initialScrollIndex > 0 &&
!this._hasDoneInitialScroll
) {
this.scrollToIndex({
animated: false,
index: this.props.initialScrollIndex,
});
if (this.props.contentOffset == null) {
this.scrollToIndex({
animated: false,
index: this.props.initialScrollIndex,
});
}
this._hasDoneInitialScroll = true;
}
if (this.props.onContentSizeChange) {