/
githubmirror
/
material-ui
Обзор
Документация
Войти
/
githubmirror
/
material-ui
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
docs/data/material/components/progress/DelayingAppearance.js
76 строк
2 KB
Albert Yu
[docs][progress] Label all demo components (#48143)
01 апр 2026, 12:09
Не верифицирован
01 апр 2026, 12:09
124db37
Код
Авторство
О чём код?
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 ( <Box sx={{ display: 'flex', flexDirection: 'column', alignItems: 'center' }}> <Box sx={{ height: 40 }}> <Fade in={loading} style={{ transitionDelay: loading ? '800ms' : '0ms', }} unmountOnExit > <CircularProgress aria-label="Loading…" /> </Fade> </Box> <Button onClick={handleClickLoading} sx={{ m: 2 }}> {loading ? 'Stop loading' : 'Loading'} </Button> <Box sx={{ height: 40 }}> {query === 'success' ? ( <Typography>Success!</Typography> ) : ( <Fade in={query === 'progress'} style={{ transitionDelay: query === 'progress' ? '800ms' : '0ms', }} unmountOnExit > <CircularProgress aria-label="Loading…" /> </Fade> )} </Box> <Button onClick={handleClickQuery} sx={{ m: 2 }}> {query !== 'idle' ? 'Reset' : 'Simulate a load'} </Button> </Box> ); }