Ревью React-компонента с условным hook

Hooks должны вызываться в одном порядке на верхнем уровне компонента. Перенесите условный возврат ниже hooks либо выделите отдельный компонент для ветки с пользователем.

Короткий ответ

Что ответить на собеседовании

Hooks должны вызываться в одном порядке на верхнем уровне компонента. Перенесите условный возврат ниже hooks либо выделите отдельный компонент для ветки с пользователем.

Подробный разбор

Ответ с пояснениями

Условие

Компонент выполняет if (!user) return null, а ниже вызывает useState и useEffect. При появлении user возникают ошибки hooks. Как исправить структуру?

Ответ

Hooks должны вызываться в одном порядке на верхнем уровне компонента. Перенесите условный возврат ниже hooks либо выделите отдельный компонент для ветки с пользователем.

Во втором варианте родитель делает return user ? <UserPanel user={user} /> : null, а UserPanel безусловно вызывает свои hooks. Эффект внутри него должен корректно очищаться при размонтировании. Проверьте также, не запускаются ли запросы из render и не мутируются ли props: это независимые нарушения, которые один перенос if не исправит.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее