Хотите заказать веб-сайт? Связаться с нами

Библиотеки для стилизации React-компонентов

Когда в проекте становится много компонентов, писать стили вручную через обычный CSS долго и неудобно: приходится следить за уникальностью классов, вручную поддерживать единую тему приложения и снова и снова переписывать одни и те же паттерны вроде кнопок, модальных окон и форм. React-экосистема решает эту проблему с помощью готовых UI-библиотек, которые берут стилизацию и вёрстку типовых компонентов на себя. В этом уроке разберём три самые популярные из них — Chakra UI, Material UI и Ant Design — и научимся быстро подключать их к проекту.

Библиотеки для стилизации React-компонентов

Зачем нужны UI-библиотеки в React

У React нет встроенного решения для стилизации — библиотека отвечает только за рендеринг, а способ оформления компонентов разработчик выбирает сам. За годы существования React сложилось несколько основных подходов, и у каждого свои сильные и слабые стороны.
  1. Инлайн-стили через проп style — быстро, но без псевдоклассов и медиа-запросов
  2. CSS Modules — изолированные классы, но нет прямого доступа к пропсам компонента
  3. CSS-in-JS вроде styled-components и Emotion — стили живут рядом с компонентом
  4. Готовые UI-kit библиотеки — набор компонентов и тема «из коробки»

Первые два подхода мы уже частично затрагивали в предыдущих уроках, а с CSS-in-JS подробно познакомимся в уроках 29 и 30. Сегодняшний урок — про четвёртый путь: библиотеки, которые дают не просто набор стилей, а целую систему готовых компонентов вроде Button, Modal или Table, уже адаптированных под тёмную и светлую тему.

Chakra UI

Chakra UI — библиотека, которая делает ставку на простоту и скорость разработки. Вместо написания отдельных CSS-классов она использует style-props: свойства компонента, которые сразу превращаются в стили без дополнительного CSS-файла.

Установка и первый компонент

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 есть несколько черт, которые выделяют её среди других библиотек.

  1. Style-props вместо CSS-классов, например p={4} вместо padding
  2. Встроенная поддержка светлой и тёмной темы «из коробки»
  3. Доступность (accessibility) заложена в компоненты по умолчанию
  4. Единая система токенов темы для отступов, цветов и размеров шрифта

Не создавайте объект стилей заново при каждом рендере компонента. Если один и тот же набор стилей повторяется в нескольких местах, вынесите его в отдельную константу или добавьте в тему через extendTheme — это уменьшит количество вычислений при рендере и упростит поддержку кода.

Material UI (MUI)

Material UI, или сокращённо 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

  1. Готовая реализация Material Design с продуманной типографикой
  2. Гибкая настройка темы через функцию createTheme
  3. Множество сложных готовых компонентов: DataGrid, DatePicker, Autocomplete
  4. Большое сообщество, подробная документация и много готовых примеров

Ant Design

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

  1. Большой набор готовых enterprise-компонентов: сложные таблицы, формы, графики
  2. Строгая дизайн-система с фиксированными отступами и размерами шрифта
  3. Гибкая настройка темы через компонент ConfigProvider
  4. Активно используется в крупных корпоративных и государственных проектах

Сравнение 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-библиотеку.

Теги: