Какие знаешь подходы к написанию переиспользуемых компонентов

«Какие знаешь подходы к написанию переиспользуемых компонентов» — вопрос из категории Паттерны, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

  1. Композиция компонентов - разбиение на мелкие независимые части, которые можно комбинировать (как Lego). Пример: кнопка с иконкой и текстом.
<Button>
  <Icon name="user" />
  <Text>Login</Text>
</Button>
  1. Props-контроль - компонент должен быть гибким через пропсы (children, className, стили). Пример:
function Card({ children, className }) {
  return <div className={`card ${className}`}>{children}</div>
}
  1. Render Props/HOC - для логического переиспользования. Пример:
<DataFetcher render={(data) => <List items={data} />} />
  1. Compound Components - связанные компоненты, разделяющие состояние (например, Tabs).

  2. Custom Hooks - вынос общей логики в хуки.

  3. Контекст - для передачи данных без пропс-дриллинга.

  4. Дизайн-система - единые правила стилей, API и документации.

Главное - компонент должен делать одну вещь, быть предсказуемым и документированным.