Списки
Списки представляют собой непрерывные вертикальные массивы данных из текста или изображений.
Списки представляют собой непрерывную группу из текста или изображений. Они состоят из элементов, содержащих основные и дополнительные действия, которые представлены значками и текстом.
Последний элемент предыдущего примера показывает, как вы можете отрисовать ссылку:
function ListItemLink(props) {
return <ListItem button component="a" {...props} />;
}
//...
function ListItemLink(props) {
return <ListItem button component="a" {...props} />;
}
//...
Вы можете посмотреть демо с React Router.
Вложенный список
- Photos
Jan 9, 2014
- Work
Jan 7, 2014
- Vacation
July 20, 2014
Интерактивность
Ниже приведен интерактивный пример, который демонстрирует результаты различных настроек сетки:
- Single-line item
- Single-line item
- Single-line item
- Single-line item
- Single-line item
- Single-line item
- Single-line item
- Single-line item
- Single-line item
- Single-line item
- Single-line item
- Single-line item
Выравнивание элементов списка
Вы должны изменить выравнивание элементов списка при отображении 3 или более элементов. Для этого установите свойство alignItems = "flex-start"
- Brunch this weekend?
Ali Connors — I'll be in your neighborhood doing errands this…
- Summer BBQ
to Scott, Alex, Jennifer — Wish I could come, but I'm out of town this…
- Oui Oui
Sandra Adams — Do you have Paris recommendations? Have you ever…
Элементы управления списком
Checkbox
Checkbox может быть основным или второстепенным действием.
The checkbox is the primary action and the state indicator for the list item. The comment button is a secondary action and a separate target.
Тут checkbox является второстепенным действием для элемента списка.
- Settings
- Wi-Fi
- Bluetooth
Закрепленный подзаголовок
При прокрутке подзаголовки остаются закрепленными в верхней части экрана, пока следующий подзаголовок не оттеснит предыдущий.
This feature relies on CSS sticky positioning. Unfortunately it's not implemented by all the supported browsers. It defaults to disableSticky
when not supported.
- I'm sticky 0
- Item 0
- Item 1
- Item 2
- I'm sticky 1
- Item 0
- Item 1
- Item 2
- I'm sticky 2
- Item 0
- Item 1
- Item 2
- I'm sticky 3
- Item 0
- Item 1
- Item 2
- I'm sticky 4
- Item 0
- Item 1
- Item 2
<List className={classes.root} subheader={<li />}>
{[0, 1, 2, 3, 4].map((sectionId) => (
<li key={`section-${sectionId}`} className={classes.listSection}>
<ul className={classes.ul}>
<ListSubheader>{`I'm sticky ${sectionId}`}</ListSubheader>
{[0, 1, 2].map((item) => (
<ListItem key={`item-${sectionId}-${item}`}>
<ListItemText primary={`Item ${item}`} />
</ListItem>
))}
</ul>
</li>
))}
</List>
Inset List Item
The inset
prop enables a list item that does not have a leading icon or avatar to align correctly with items that do.
<List component="nav" className={classes.root} aria-label="contacts">
<ListItem button>
<ListItemIcon>
<StarIcon />
</ListItemIcon>
<ListItemText primary="Chelsea Otakan" />
</ListItem>
<ListItem button>
<ListItemText inset primary="Eric Hoffman" />
</ListItem>
</List>
Gutterless list
When rendering a list within a component that defines its own gutters, ListItem
gutters can be disabled with disableGutters
.
- Line item 1
- Line item 2
- Line item 3
<List className={classes.root}>
{[1, 2, 3].map((value) => (
<ListItem key={value} disableGutters>
<ListItemText primary={`Line item ${value}`} />
<ListItemSecondaryAction>
<CommentIcon color="action" />
</ListItemSecondaryAction>
</ListItem>
))}
</List>
Virtualized List
In the following example, we demonstrate how to use react-window with the List
component. Он отображает 200 строк и c легкостью может еще больше. Virtualization helps with performance issues.
<FixedSizeList
height={400}
width={360}
itemSize={46}
itemCount={200}
overscanCount={5}
>
{renderRow}
</FixedSizeList>
If this library doesn't cover your use case, you should consider using react-virtualized, then alternatives like react-virtuoso. The use of react-window when possible is encouraged.
Кастомизация
🎨 If you are looking for inspiration, you can check MUI Treasury's customization examples.