From e8a0f0d0672e27c4bec7b3cb325a1e9a21203333 Mon Sep 17 00:00:00 2001 From: Samuel Susla Date: Mon, 23 Oct 2023 02:16:11 -0700 Subject: [PATCH] filter out onContentSizeChange from defaultRenderScrollComponent (#41113) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/41113 changelog: [internal] We must prevent VirtualizedList._onContentSizeChange from being triggered by a conflicting bubbling onContentSizeChange event. For TextInput, we change the event onContentSizeChange from bubbling to direct (https://github.com/facebook/react-native/commit/744fb4a0d23d15a40cd591e31f6c0f6cb3a7f06b). To make this safer, we need to filter out any `onContentSizeChange` event since we can't control 3rd party components from dispatching onContentSizeChange as bubbling event. Reviewed By: NickGerleman Differential Revision: D50451232 fbshipit-source-id: b7a446e4efc9c45024d37f35cb53f2fcbb28799f --- packages/virtualized-lists/Lists/VirtualizedList.js | 6 ++++-- .../__tests__/__snapshots__/VirtualizedList-test.js.snap | 1 - .../__snapshots__/VirtualizedSectionList-test.js.snap | 1 - 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/virtualized-lists/Lists/VirtualizedList.js b/packages/virtualized-lists/Lists/VirtualizedList.js index ce66e743465f1b..886e2ec657be0b 100644 --- a/packages/virtualized-lists/Lists/VirtualizedList.js +++ b/packages/virtualized-lists/Lists/VirtualizedList.js @@ -1257,8 +1257,10 @@ class VirtualizedList extends StateSafePureComponent { _defaultRenderScrollComponent = props => { const onRefresh = props.onRefresh; if (this._isNestedWithSameOrientation()) { - // $FlowFixMe[prop-missing] - Typing ReactNativeComponent revealed errors - return ; + // Prevent VirtualizedList._onContentSizeChange from being triggered by a bubbling onContentSizeChange event. + // This could lead to internal inconsistencies within VirtualizedList. + const {onContentSizeChange, ...otherProps} = props; + return ; } else if (onRefresh) { invariant( typeof props.refreshing === 'boolean', diff --git a/packages/virtualized-lists/Lists/__tests__/__snapshots__/VirtualizedList-test.js.snap b/packages/virtualized-lists/Lists/__tests__/__snapshots__/VirtualizedList-test.js.snap index 753add39cb5250..7790f8581bdb85 100644 --- a/packages/virtualized-lists/Lists/__tests__/__snapshots__/VirtualizedList-test.js.snap +++ b/packages/virtualized-lists/Lists/__tests__/__snapshots__/VirtualizedList-test.js.snap @@ -468,7 +468,6 @@ exports[`VirtualizedList handles nested lists 1`] = ` getItem={[Function]} getItemCount={[Function]} horizontal={false} - onContentSizeChange={[Function]} onLayout={[Function]} onMomentumScrollBegin={[Function]} onMomentumScrollEnd={[Function]} diff --git a/packages/virtualized-lists/Lists/__tests__/__snapshots__/VirtualizedSectionList-test.js.snap b/packages/virtualized-lists/Lists/__tests__/__snapshots__/VirtualizedSectionList-test.js.snap index d3cb7b4e755eb7..8a01cb58500c54 100644 --- a/packages/virtualized-lists/Lists/__tests__/__snapshots__/VirtualizedSectionList-test.js.snap +++ b/packages/virtualized-lists/Lists/__tests__/__snapshots__/VirtualizedSectionList-test.js.snap @@ -62,7 +62,6 @@ exports[`VirtualizedSectionList handles nested lists 1`] = ` getItemCount={[Function]} horizontal={false} keyExtractor={[Function]} - onContentSizeChange={[Function]} onLayout={[Function]} onMomentumScrollBegin={[Function]} onMomentumScrollEnd={[Function]}