Библиотеки для стилизации React-компонентов
Когда в проекте становится много компонентов, писать стили вручную через обычный CSS долго и неудобно: приходится следить за уникальностью классов, вручную поддерживать единую тему приложения и снова и снова переписывать одни и те же паттерны вроде кнопок, модальных окон и форм. React-экосистема решает эту проблему с помощью готовых UI-библиотек, которые берут стилизацию и вёрстку типовых компонентов на себя. В этом уроке разберём три самые популярные из них — Chakra UI, Material UI и Ant Design — и научимся быстро подключать их к проекту.
Зачем нужны UI-библиотеки в React
- Инлайн-стили через проп
style— быстро, но без псевдоклассов и медиа-запросов - CSS Modules — изолированные классы, но нет прямого доступа к пропсам компонента
- CSS-in-JS вроде styled-components и Emotion — стили живут рядом с компонентом
- Готовые UI-kit библиотеки — набор компонентов и тема «из коробки»
Первые два подхода мы уже частично затрагивали в предыдущих уроках, а с CSS-in-JS подробно познакомимся в уроках 29 и 30. Сегодняшний урок — про четвёртый путь: библиотеки, которые дают не просто набор стилей, а целую систему готовых компонентов вроде Button, Modal или Table, уже адаптированных под тёмную и светлую тему.
Chakra UI
Установка и первый компонент
Chakra UI построена поверх Emotion и framer-motion, поэтому при установке нужно поставить сразу несколько пакетов.
npm install @chakra-ui/react @emotion/react @emotion/styled framer-motion
После установки всё приложение нужно обернуть в компонент ChakraProvider — именно он даёт всем дочерним компонентам доступ к теме и системе стилей.
import { ChakraProvider, Button, Box } from '@chakra-ui/react';
function App() {
return (
<ChakraProvider>
<Box p={4}>
<Button colorScheme="blue">Нажми меня</Button>
</Box>
</ChakraProvider>
);
}
export default App;
Особенности Chakra UI
У Chakra UI есть несколько черт, которые выделяют её среди других библиотек.
- Style-props вместо CSS-классов, например
p={4}вместо padding - Встроенная поддержка светлой и тёмной темы «из коробки»
- Доступность (accessibility) заложена в компоненты по умолчанию
- Единая система токенов темы для отступов, цветов и размеров шрифта
Не создавайте объект стилей заново при каждом рендере компонента. Если один и тот же набор стилей повторяется в нескольких местах, вынесите его в отдельную константу или добавьте в тему через extendTheme — это уменьшит количество вычислений при рендере и упростит поддержку кода.
Material UI (MUI)
MUI, — одна из старейших и самых зрелых библиотек компонентов для React. Она реализует дизайн-систему Google под названием Material Design и предоставляет огромный набор готовых элементов интерфейса — от простых кнопок до сложных таблиц с сортировкой и пагинацией.Установка и пример
Как и Chakra UI, Material UI построена на Emotion, поэтому пакеты стилизации ставятся вместе с основной библиотекой.
npm install @mui/material @emotion/react @emotion/styled
Стилизовать конкретный компонент удобно через проп sx — он принимает объект со стилями и понимает токены темы, например отступы в условных единицах.
import Button from '@mui/material/Button';
import Box from '@mui/material/Box';
function App() {
return (
<Box sx={{ padding: 2 }}>
<Button variant="contained" color="primary">
Нажми меня
</Button>
</Box>
);
}
export default App;
Особенности Material UI
- Готовая реализация Material Design с продуманной типографикой
- Гибкая настройка темы через функцию
createTheme - Множество сложных готовых компонентов:
DataGrid,DatePicker,Autocomplete - Большое сообщество, подробная документация и много готовых примеров
Ant Design
antd, — библиотека, ориентированная в первую очередь на корпоративные приложения и админ-панели. Она предлагает строгий, последовательный визуальный язык и множество сложных готовых компонентов для работы с данными.Установка и пример
npm install antd
Начиная с пятой версии Ant Design использует CSS-in-JS под капотом, поэтому подключать отдельный файл стилей вручную обычно не требуется.
import { Button } from 'antd';
function App() {
return <Button type="primary">Нажми меня</Button>;
}
export default App;
Особенности Ant Design
- Большой набор готовых enterprise-компонентов: сложные таблицы, формы, графики
- Строгая дизайн-система с фиксированными отступами и размерами шрифта
- Гибкая настройка темы через компонент
ConfigProvider - Активно используется в крупных корпоративных и государственных проектах
Сравнение Chakra UI, Material UI и Ant Design
У всех трёх библиотек одна и та же цель — избавить разработчика от ручной стилизации, но приходят они к ней разными путями. Ниже — краткое сравнение по ключевым критериям.
| Критерий | Chakra UI | Material UI | Ant Design |
|---|---|---|---|
| Подход к стилизации | Style-props и токены темы | Тема Material Design, проп sx | Готовые компоненты, CSS-in-JS под капотом |
| Кривая обучения | Низкая | Средняя | Средняя |
| Настройка темы | Через extendTheme | Через createTheme | Через ConfigProvider |
| Где чаще используется | Стартапы, лендинги | Продукты в стиле Google | Админ-панели, enterprise-приложения |
Если важна скорость старта и минимализм — присмотритесь к Chakra UI. Если нужен готовый и предсказуемый визуальный язык уровня Google — выбирайте Material UI. А для сложных админ-панелей и enterprise-систем с таблицами и формами часто удобнее Ant Design.
Если для проекта важен размер итогового бандла, импортируйте компоненты точечно, например import Button from '@mui/material/Button', а не весь пакет целиком. Это позволяет бандлеру эффективнее выполнять tree-shaking и не тащить в сборку неиспользуемый код.
Собери свой код. Запусти сайт!
От наброска на салфетке до первого работающего лендинга. Наш онлайн-курс «Веб-верстка с нуля и до профессионала» — это интенсивный трек, где ты не будешь зубрить теорию, а с первого дня начнешь превращать идеи в чистый HTML и CSS.
Собери свой первый проект под руководством практикующих разработчиков.
Итоги
Мы разобрали три популярные библиотеки для стилизации React-компонентов — Chakra UI, Material UI и Ant Design. У каждой свой подход: Chakra делает ставку на простоту и style-props, Material UI — на реализацию Google Material Design, а Ant Design — на готовые enterprise-компоненты для сложных интерфейсов. Итоговый выбор зависит от задачи, размера проекта и того, насколько важна гибкая кастомизация внешнего вида.
В следующем уроке разберём Styled Components — подход, при котором стили пишутся прямо в JavaScript-коде рядом с компонентом, а не выносятся в отдельную UI-библиотеку.