PassFront
  1. PassFront
  2. База знаний
  3. Паттерны и подходы

Какие паттерны переиспользования кода в React применяются на практике и какие проблемы они решают?

Паттерны и подходы

Переиспользование в React делится на два вида: переиспользование логики и переиспользование UI. Для каждого — свои паттерны.

Кастомные хуки — основной паттерн для логики

const useDebounce = (value, delay) => { ... };
const online = useOnlineStatus();

Решают: дублирование stateful-логики (загрузка, подписки, формы, дебаунс) без обёрток и «матрёшки» в DevTools; композируются друг из друга, тестируются изолированно. Шарится логика, а не данные: у каждого вызова своё состояние.

Композиция и children/слоты — для UI

<Card header={<Title/>} footer={<Actions/>}>{content}</Card>

Решают: жёсткость компонентов и prop drilling; вместо десятка «настроечных» props потребитель передаёт готовые куски разметки.

Составные компоненты (compound)

<Tabs><Tabs.List/><Tabs.Panel/></Tabs>

Общий внутренний контекст, свободная разметка. Решают: гибкость сложных виджетов без «пропс-взрыва».

Headless-компоненты/хуки

Логика без стилей (TanStack Table, Radix, React Hook Form): решают конфликт «готовый UI против своей дизайн-системы».

HOC — легаси-паттерн

withAuth(Component), connect, React.memo. Решают расширение поведения обёрткой; сегодня уступают хукам, остаются там, где нужно управлять самим рендерингом или обернуть чужой компонент.

Render props

<DataProvider render={(data) => ...} /> — предшественник хуков; встречается в легаси и там, где нужен инверсный контроль рендера.

Коротко для собеседования

Логика — кастомные хуки (заменили HOC и render props: композиция, тесты, отсутствие обёрток). UI — композиция через children/слоты, составные компоненты (compound + контекст) и headless-библиотеки для логики без стилей. HOC/render props — легаси, уместны при контроле рендеринга чужого компонента.

Другие вопросы раздела