import * as React from 'react'; import Box from '@mui/material/Box'; import Fade from '@mui/material/Fade'; import Button from '@mui/material/Button'; import CircularProgress from '@mui/material/CircularProgress'; import Typography from '@mui/material/Typography'; export default function DelayingAppearance() { const [loading, setLoading] = React.useState(false); const [query, setQuery] = React.useState('idle'); const timerRef = React.useRef(undefined); React.useEffect( () => () => { clearTimeout(timerRef.current); }, [], ); const handleClickLoading = () => { setLoading((prevLoading) => !prevLoading); }; const handleClickQuery = () => { if (timerRef.current) { clearTimeout(timerRef.current); } if (query !== 'idle') { setQuery('idle'); return; } setQuery('progress'); timerRef.current = setTimeout(() => { setQuery('success'); }, 2000); }; return ( {query === 'success' ? ( Success! ) : ( )} ); }