Сравни способы стилизации компонентов и объясни, когда выбирать каждый вариант.
Компоненты
Способов стилизации в React несколько, и выбор — это баланс между изоляцией, динамикой от props, производительностью и удобством команды.
Обычный CSS / SCSS
Глобальные классы, знакомый инструментарий.
- Плюсы: нулевой рантайм, кеширование, любые фичи CSS.
- Минусы: глобальная область имён — конфликты и «протекание» стилей, нужна дисциплина (BEM).
- Выбирать: маленькие проекты, команды с сильной CSS-культурой.
CSS Modules
import styles from './Card.module.css';
<div className={styles.card} />- Плюсы: автоматическая изоляция (классы хешируются), нулевой рантайм, простая миграция с обычного CSS.
- Минусы: динамика от props — через комбинирование классов, немного «клея» (clsx).
- Выбирать: дефолт для большинства проектов без дизайн-системы на токенах.
CSS-in-JS (styled-components, Emotion)
const Button = styled.button`
background: ${(p) => p.variant === 'danger' ? 'red' : 'blue'};
`;- Плюсы: стили рядом с логикой, полная динамика от props, темизация.
- Минусы: рантайм-стоимость (генерация стилей в браузере), сложности с SSR/RSC — экосистема от этого подхода постепенно отходит.
- Выбирать: сильно динамические UI, существующие кодовые базы на этом стеке.
Utility-first (Tailwind CSS)
<div className="flex items-center gap-2 rounded-lg p-4" />- Плюсы: скорость разработки, единая шкала отступов/цветов, нулевой рантайм, отлично живёт с RSC.
- Минусы: «шумная» разметка, порог входа, кастомный дизайн требует настройки конфига.
- Выбирать: продуктовая разработка с дизайн-системой, Next.js-проекты.
Inline-стили
style={{ width }} — только для действительно динамических значений (координаты, размеры), не для постоянного оформления: нет псевдоклассов и медиазапросов.
Коротко для собеседования
Основные варианты: CSS Modules (изоляция без рантайма — хороший дефолт), Tailwind (скорость и консистентность, дружит с SSR/RSC), CSS-in-JS (максимум динамики, но рантайм и проблемы с серверными компонентами), обычный CSS (просто, но глобально). Выбор определяют потребность в динамике, SSR и привычки команды.