in src/hooks/useMount.ts [10:46]
function useMount({ active = false, ref, delay = 300 }: UseMountOptions) {
const [isShow, setIsShow] = useState(false);
const [didMount, setDidMount] = useState(false);
const timeout = useRef<ReturnType<typeof setTimeout>>();
const clear = () => {
if (timeout.current) {
clearTimeout(timeout.current);
}
};
useEffect(() => {
if (active) {
clear();
setDidMount(active);
} else {
setIsShow(active);
timeout.current = setTimeout(() => {
setDidMount(active);
}, delay);
}
return clear;
}, [active, delay]);
useEffect(() => {
if (ref.current) {
reflow(ref.current);
}
setIsShow(didMount);
}, [didMount, ref]);
return {
didMount,
isShow,
};
}