rootNavigation.ts
780 Bytes
import * as React from 'react';
import { NavigationContainerRef } from '@react-navigation/native';
import { MainStackParamList, MainTabParamList } from '../type/Navigation';
export const navigationRef = React.createRef<NavigationContainerRef>();
export const isMountedRef = React.createRef<
boolean
>() as React.MutableRefObject<boolean>;
export function useMountedRef() {
isMountedRef.current = true;
return () => {
isMountedRef.current = false;
};
}
export type ParamList = MainStackParamList & MainTabParamList;
export type AllRouteNames = keyof ParamList;
export function rootNavigate<K extends AllRouteNames>(
name: K,
params: ParamList[K]
) {
if (isMountedRef.current && navigationRef.current) {
navigationRef.current.navigate(name, params);
}
}