intermediate
Custom hooks
Выносите переиспользуемое поведение со state, сохраняя правила render, dependencies и явное владение.
Пользовательский hook — функция с именем на `use`, которая может вызывать другие hooks. Он выносит переиспользуемую логику со state — загрузку данных, поля формы, media queries — без изменения дерева компонентов. Hook владеет логикой, компоненты — отрисовкой.
Делитесь контрактом через возвращаемые значения и аргументы, а не через скрытые синглтоны модулей. Тестируйте hooks через render-хелперы `@testing-library/react` или специализированные утилиты. Пользовательские hooks обязаны соблюдать правила hooks: вызывать их только на верхнем уровне React-функций.
На интервью объясняйте концепцию на конкретном примере и называйте поведение, которое проверяют.
Типовые ошибки: скрывать поток данных, дробить компоненты чрезмерно и выполнять побочные эффекты в render.
Компромисс часто между ясностью и переиспользованием или между явными props и удобством.
Чеклист:
- Префикс `use` и соблюдение правил hooks.
- Стабильный и документированный возвращаемый API.
- Побочные эффекты внутри hook должны быть осознанными.