@@ -13,7 +13,7 @@ type RefContextValue<T> = {
1313 cellDataRef : React . MutableRefObject < Map < string , CellData > > ;
1414 keyToIndexRef : React . MutableRefObject < Map < string , number > > ;
1515 containerRef : React . RefObject < Animated . View > ;
16- flatlistRef : React . RefObject < FlatList < T > > ;
16+ flatListRef : React . RefObject < FlatList < T > > | React . ForwardedRef < FlatList < T > > ;
1717 panGestureHandlerRef : React . RefObject < PanGestureHandler > ;
1818 scrollOffsetRef : React . MutableRefObject < number > ;
1919 isTouchActiveRef : React . MutableRefObject < {
@@ -27,10 +27,12 @@ const RefContext = React.createContext<RefContextValue<any> | undefined>(
2727
2828export default function RefProvider < T > ( {
2929 children,
30+ flatListRef,
3031} : {
3132 children : React . ReactNode ;
33+ flatListRef : React . ForwardedRef < FlatList < T > > ;
3234} ) {
33- const value = useSetupRefs < T > ( ) ;
35+ const value = useSetupRefs < T > ( { flatListRef } ) ;
3436 return < RefContext . Provider value = { value } > { children } </ RefContext . Provider > ;
3537}
3638
@@ -44,7 +46,11 @@ export function useRefs<T>() {
4446 return value as RefContextValue < T > ;
4547}
4648
47- function useSetupRefs < T > ( ) {
49+ function useSetupRefs < T > ( {
50+ flatListRef : flatListRefProp ,
51+ } : {
52+ flatListRef : React . ForwardedRef < FlatList < T > > ;
53+ } ) {
4854 const props = useProps < T > ( ) ;
4955 const { onRef, animationConfig = DEFAULT_PROPS . animationConfig } = props ;
5056
@@ -62,24 +68,21 @@ function useSetupRefs<T>() {
6268 const cellDataRef = useRef ( new Map < string , CellData > ( ) ) ;
6369 const keyToIndexRef = useRef ( new Map < string , number > ( ) ) ;
6470 const containerRef = useRef < Animated . View > ( null ) ;
65- const flatlistRef = useRef < FlatList < T > > ( null ) ;
71+ const flatListRefInner = useRef < FlatList < T > > ( null ) ;
72+ const flatListRef = flatListRefProp || flatListRefInner ;
6673 const panGestureHandlerRef = useRef < PanGestureHandler > ( null ) ;
6774 const scrollOffsetRef = useRef ( 0 ) ;
6875 const isTouchActiveRef = useRef ( {
6976 native : isTouchActiveNative ,
7077 js : false ,
7178 } ) ;
7279
73- useEffect ( ( ) => {
74- if ( flatlistRef . current ) onRef ?.( flatlistRef . current ) ;
75- } , [ onRef ] ) ;
76-
7780 const refs = useMemo (
7881 ( ) => ( {
7982 animationConfigRef,
8083 cellDataRef,
8184 containerRef,
82- flatlistRef ,
85+ flatListRef ,
8386 isTouchActiveRef,
8487 keyToIndexRef,
8588 panGestureHandlerRef,
0 commit comments