Files
react-navigation/packages/compat/src/useCompatNavigation.tsx
2020-03-22 23:58:06 +01:00

35 lines
859 B
TypeScript

import * as React from 'react';
import {
useNavigation,
useRoute,
NavigationProp,
ParamListBase,
useNavigationState,
} from '@react-navigation/native';
import createCompatNavigationProp from './createCompatNavigationProp';
import { CompatNavigationProp } from './types';
export default function useCompatNavigation<
T extends NavigationProp<ParamListBase>
>() {
const navigation = useNavigation();
const route = useRoute();
const isFirstRouteInParent = useNavigationState(
(state) => state.routes[0].key === route.key
);
const context = React.useRef<Record<string, any>>({});
return React.useMemo(
() =>
createCompatNavigationProp(
navigation,
route as any,
context.current,
isFirstRouteInParent
) as CompatNavigationProp<T>,
[isFirstRouteInParent, navigation, route]
);
}