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 должны быть осознанными.