import { memo, ReactElement, useEffect, useRef } from 'react'; import { Animated, type ViewProps } from 'react-native'; import { navigationStackItemStyles, useNavigation } from './utils'; export type Props = ViewProps & { name: string; children: ReactElement; }; const NavigationStackItemContainer = memo(({ name, children, ...rest }: Props) => { const { currentRoute } = useNavigation(); return ( ); }); const NavigationStackItem = memo( ({ isCurrentRoute, children, style, ...rest }: Omit & { isCurrentRoute: boolean }) => { const opacityRef = useRef(new Animated.Value(isCurrentRoute ? 1 : 0)); useEffect(() => { if (isCurrentRoute) { opacityRef.current.setValue(0); } Animated.timing(opacityRef.current, { toValue: isCurrentRoute ? 1 : 0, duration: 250, useNativeDriver: true, }).start(); }, [isCurrentRoute, opacityRef]); return ( <> {isCurrentRoute && ( {children} )} ); }, ); NavigationStackItemContainer.displayName = 'NavigationStack.Item'; export default NavigationStackItemContainer;