import React, { useEffect, useState } from 'react'; interface Props extends React.HTMLAttributes { show: boolean; children: React.ReactNode; onAnimationEnd?: () => void; } export const Animation: React.FC = ({ show = true, children, onAnimationEnd = undefined, ...divAttributes }): React.ReactElement => { const [shouldRender, setRender] = useState(show); useEffect((): void => { if (show) setRender(true); }, [show]); const handleAnimationEnd = React.useCallback((): void => { if (!show) setRender(false); if (onAnimationEnd) { onAnimationEnd(); } }, [onAnimationEnd, show]); return shouldRender ? (
{children}
) : null; };