mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
12147e3bee
Summary: While upgrading a project to React 19, I noticed React.ElementRef is deprecated (see [types/react/index.d.ts#L199](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/react/index.d.ts#L199)). I think we can replace it for the RN types as well. Not sure if this is considered as a breaking change. ## Changelog: [GENERAL] [CHANGED] - TypeScript: Replace deprecated React.ElementRef usages to React.ComponentRef Pull Request resolved: https://github.com/facebook/react-native/pull/50883 Test Plan: Create a RNTesterPlayground.tsx next to the normal .js just to validate the type checking is not throwing an unexpected error. <details> <summary>Code snippet:</summary> ```tsx import React, { useRef, useEffect } from 'react'; import { FlatList, Text, View } from 'react-native'; type Item = { id: string; title: string }; const data: Item[] = Array.from({ length: 10 }, (_, i) => ({ id: i.toString(), title: `Item ${i + 1}`, })); const FlatListScrollRefExample: React.FC = () => { const flatListRef = useRef<FlatList<Item>>(null); useEffect(() => { if (flatListRef.current) { const nativeRef = flatListRef.current.getNativeScrollRef(); console.log('nativeRef', nativeRef?.componentWillUnmount); } }, []); return ( <FlatList ref={flatListRef} data={data} keyExtractor={(item) => item.id} renderItem={({ item }) => ( <View style={{ padding: 16 }}> <Text>{item.title}</Text> </View> )} /> ); }; export default FlatListScrollRefExample; ``` </details> Reviewed By: cipolleschi Differential Revision: D73569274 Pulled By: rshest fbshipit-source-id: f72477b9b3c0eda1007187c7dac3da0433410e86