/
githubmirror
/
material-ui
Обзор
Документация
Войти
/
githubmirror
/
material-ui
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
docs/data/material/components/transitions/TransitionGroupExample.js
74 строки
2 KB
Olivier Tassinari
[docs] Polish Slider demos (#38759)
03 сен 2023, 03:08
Не верифицирован
03 сен 2023, 03:08
31e2f14
Код
Авторство
О чём код?
import * as React from 'react'; import Button from '@mui/material/Button'; import Collapse from '@mui/material/Collapse'; import IconButton from '@mui/material/IconButton'; import List from '@mui/material/List'; import ListItem from '@mui/material/ListItem'; import ListItemText from '@mui/material/ListItemText'; import DeleteIcon from '@mui/icons-material/Delete'; import { TransitionGroup } from 'react-transition-group'; const FRUITS = [ '🍏 Apple', '🍌 Banana', '🍍 Pineapple', '🥥 Coconut', '🍉 Watermelon', ]; function renderItem({ item, handleRemoveFruit }) { return ( <ListItem secondaryAction={ <IconButton edge="end" aria-label="delete" title="Delete" onClick={() => handleRemoveFruit(item)} > <DeleteIcon /> </IconButton> } > <ListItemText primary={item} /> </ListItem> ); } export default function TransitionGroupExample() { const [fruitsInBasket, setFruitsInBasket] = React.useState(FRUITS.slice(0, 3)); const handleAddFruit = () => { const nextHiddenItem = FRUITS.find((i) => !fruitsInBasket.includes(i)); if (nextHiddenItem) { setFruitsInBasket((prev) => [nextHiddenItem, ...prev]); } }; const handleRemoveFruit = (item) => { setFruitsInBasket((prev) => [...prev.filter((i) => i !== item)]); }; const addFruitButton = ( <Button variant="contained" disabled={fruitsInBasket.length >= FRUITS.length} onClick={handleAddFruit} > Add fruit to basket </Button> ); return ( <div> {addFruitButton} <List sx={{ mt: 1 }}> <TransitionGroup> {fruitsInBasket.map((item) => ( <Collapse key={item}>{renderItem({ item, handleRemoveFruit })}</Collapse> ))} </TransitionGroup> </List> </div> ); }