Компонент Hidden из библиотеки MUI предназначен для условного скрытия элементов интерфейса в зависимости от размеров экрана или других условий. Он обеспечивает удобное управление адаптивностью без необходимости писать сложные CSS-медиа-запросы вручную.
Скрытие по брейкпоинтам Hidden позволяет
скрывать элементы на определённых размерах экранов, используя систему
брейкпоинтов MUI (xs, sm, md,
lg, xl).
Пример использования:
import Hidden from '@mui/material/Hidden';
import Button from '@mui/material/Button';
<Hidden smDown>
<Button variant="contained">Только на больших экранах</Button>
</Hidden>
В этом примере кнопка будет отображаться только на устройствах с
шириной md и выше, так как она скрыта для
smDown (sm и меньше).
Пропсы для управления видимостью
xsUp, smUp, mdUp,
lgUp, xlUp — элемент будет виден начиная с
указанного брейкпоинта и выше.xsDown, smDown, mdDown,
lgDown, xlDown — элемент будет виден только до
указанного брейкпоинта включительно.only — элемент виден только на указанных
брейкпоинтах.Пример с использованием only:
<Hidden only={['sm', 'md']}>
<div>Не отображается на sm и md</div>
</Hidden>Комбинирование условий Можно комбинировать пропсы для сложного контроля отображения:
<Hidden smDown only={['lg']}>
<div>Сложное условие видимости</div>
</Hidden>
Такой подход позволяет точно настраивать интерфейс под любые сценарии адаптивности.
Hidden использует CSS media queries для управления отображением.
Компонент не удаляет элементы из DOM, он просто управляет стилем
display: none. Это важно учитывать, если требуется
динамическое взаимодействие с элементами через JavaScript.
Если необходимо полностью исключить элемент из DOM, следует использовать условный рендеринг через тернарный оператор:
{isVisible && <Component />}Адаптивные панели навигации Например, на мобильных устройствах можно скрывать боковую панель:
<Hidden smDown>
<Sidebar />
</Hidden>Рекламные блоки или баннеры Баннер можно показывать только на больших экранах, чтобы не загромождать интерфейс на мобильных:
<Hidden mdDown>
<PromoBanner />
</Hidden>Формы и элементы управления Скрытие дополнительных полей на маленьких экранах:
<Hidden xsDown>
<TextField label="Дополнительная информация" />
</Hidden>Hidden для адаптивного дизайна удобно, но
для полного удаления из DOM лучше использовать условный рендеринг.Hidden с системными контейнерами MUI
(Box, Grid), можно создавать сложные
адаптивные макеты без лишнего CSS.Hidden работает в связке с темой MUI, поэтому брейкпоинты автоматически подстраиваются под кастомные настройки темы. Пример кастомной темы с изменёнными брейкпоинтами:
import { createTheme } from '@mui/material/styles';
const theme = createTheme({
breakpoints: {
values: {
xs: 0,
sm: 600,
md: 900,
lg: 1200,
xl: 1536,
},
},
});
После этого Hidden будет использовать новые значения для
smDown, mdUp и других пропсов.
Компонент Hidden — мощный инструмент для контроля видимости элементов в MUI, который сочетает простоту использования с гибкой адаптивностью, позволяя создавать интерфейсы, корректно отображающиеся на любых устройствах.