import React from 'react'; import { makeStyles, createStyles, Theme } from '@material-ui/core/styles'; import Fade from '@material-ui/core/Fade'; import Button from '@material-ui/core/Button'; import CircularProgress from '@material-ui/core/CircularProgress'; import Typography from '@material-ui/core/Typography'; const useStyles = makeStyles((theme: Theme) => createStyles({ root: { display: 'flex', flexDirection: 'column', alignItems: 'center', }, button: { margin: theme.spacing(2), }, placeholder: { height: 40, }, }), ); export default function DelayingAppearance() { const classes = useStyles(); const [loading, setLoading] = React.useState(false); const [query, setQuery] = React.useState('idle'); const timerRef = React.useRef(); React.useEffect( () => () => { clearTimeout(timerRef.current); }, [], ); const handleClickLoading = () => { setLoading((prevLoading) => !prevLoading); }; const handleClickQuery = () => { clearTimeout(timerRef.current); if (query !== 'idle') { setQuery('idle'); return; } setQuery('progress'); timerRef.current = window.setTimeout(() => { setQuery('success'); }, 2000); }; return (
{query === 'success' ? ( Success! ) : ( )}
); }