PassFront
  1. PassFront
  2. База знаний
  3. Хуки

Какое условие, чтобы React распознал функцию как хук?

Хуки

Формально React «распознаёт» хук по имени: функция должна начинаться с `use` и следующей заглавной буквы (useAuth, useDebounce). Это соглашение, на котором держатся инструменты.

Что даёт правило имени

  • ESLint-плагин react-hooks применяет к таким функциям правила хуков: проверяет, что они вызываются только на верхнем уровне компонента или другого хука, и следит за зависимостями (exhaustive-deps).
  • Читателю сразу видно: функция может иметь состояние и вызывать другие хуки — значит, её нельзя звать в условиях или колбэках.
  • React Compiler (React 19) и DevTools используют то же соглашение.

Обратная сторона: назвав обычную функцию useSomething, вы получите ложные предупреждения линтера; назвав хук getSomething — потеряете проверки, а баги с порядком вызовов проявятся в рантайме.

Что делает функцию хуком

Внутреннее использование других хуков (useState, useEffect, useContext...). Сам React во время выполнения ничего не «распознаёт»: он лишь ведёт счётчик вызовов хуков на fiber-узле рендерящегося компонента. Поэтому важен порядок вызовов, а не имя.

Условия корректности

  • Вызов только из функционального компонента или другого хука (не из обычной функции, класса, обработчика).
  • Только верхний уровень: без условий, циклов, раннего return.
  • Имя с префикса use — чтобы линтер это проверил.

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

Соглашение: имя начинается с use + заглавная буква — по нему ESLint (react-hooks) применяет правила хуков и проверяет зависимости. Технически же функция становится хуком, потому что использует другие хуки; React привязывает состояние по порядку вызовов на fiber-узле, поэтому вызывать хуки можно только на верхнем уровне компонента или другого хука.

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