mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
fix: make sure initialScrollIndex is bigger than 0 (#36844)
Summary: Hey, `adjustCellsAroundViewport` function was checking if `props.initialScrollIndex` is truthy and -1 was returning true. This caused bugs with rendering for tvOS: https://github.com/react-native-tvos/react-native-tvos/pull/485 There are warnings in the code about `initalScrollIndex` being smaller than 0 but this if statement would still allow that. ## Changelog: [General] [Fixed] - Make sure initialScrollToIndex is bigger than 0 when adjusting cells Pull Request resolved: https://github.com/facebook/react-native/pull/36844 Test Plan: Pass -1 as initialScrollToIndex. Check that this code is executed. Reviewed By: cipolleschi Differential Revision: D44856266 Pulled By: NickGerleman fbshipit-source-id: 781a1c0efeae93f00766eede4a42559dcd066d7d
This commit is contained in:
committed by
bang9
parent
9cb7b44d4c
commit
acc5fdff47
@@ -616,7 +616,7 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
|
||||
),
|
||||
};
|
||||
} else {
|
||||
// If we have a non-zero initialScrollIndex and run this before we've scrolled,
|
||||
// If we have a positive non-zero initialScrollIndex and run this before we've scrolled,
|
||||
// we'll wipe out the initialNumToRender rendered elements starting at initialScrollIndex.
|
||||
// So let's wait until we've scrolled the view to the right place. And until then,
|
||||
// we will trust the initialScrollIndex suggestion.
|
||||
@@ -627,7 +627,8 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
|
||||
// - initialScrollIndex > 0 AND the end of the list is visible (this handles the case
|
||||
// where the list is shorter than the visible area)
|
||||
if (
|
||||
props.initialScrollIndex &&
|
||||
props.initialScrollIndex != null &&
|
||||
props.initialScrollIndex > 0 &&
|
||||
!this._scrollMetrics.offset &&
|
||||
Math.abs(distanceFromEnd) >= Number.EPSILON
|
||||
) {
|
||||
|
||||
+47
-6
@@ -3122,12 +3122,53 @@ exports[`gracefully handles negative initialScrollIndex 1`] = `
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"height": 60,
|
||||
}
|
||||
}
|
||||
/>
|
||||
onFocusCapture={[Function]}
|
||||
style={null}
|
||||
>
|
||||
<MockCellItem
|
||||
value={4}
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
onFocusCapture={[Function]}
|
||||
style={null}
|
||||
>
|
||||
<MockCellItem
|
||||
value={5}
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
onFocusCapture={[Function]}
|
||||
style={null}
|
||||
>
|
||||
<MockCellItem
|
||||
value={6}
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
onFocusCapture={[Function]}
|
||||
style={null}
|
||||
>
|
||||
<MockCellItem
|
||||
value={7}
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
onFocusCapture={[Function]}
|
||||
style={null}
|
||||
>
|
||||
<MockCellItem
|
||||
value={8}
|
||||
/>
|
||||
</View>
|
||||
<View
|
||||
onFocusCapture={[Function]}
|
||||
style={null}
|
||||
>
|
||||
<MockCellItem
|
||||
value={9}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
</RCTScrollView>
|
||||
`;
|
||||
|
||||
Reference in New Issue
Block a user