import React, { useState, useEffect } from "react"; /* * Back when I started this project, there used to be a library for animation made by facebook * named: react-addons-css-transition-group * Facebook got away from it and things haven't stayed backward compatible at the point where I got * to realise it would be easier to write this simpler wrapper than migrate things over */ export function CSSTransition({ transitionName = "animate", children = null, transitionAppearTimeout = 300, }) { const [className, setClassName] = useState(`${transitionName} ${transitionName}-appear`); useEffect(() => { setClassName(`${transitionName} ${transitionName}-appear ${transitionName}-appear-active`); const timeout = setTimeout(() => { setClassName(`${transitionName}`); }, transitionAppearTimeout); return () => clearTimeout(timeout); }, []); return (
{ children }
); }