Объясните жизненный цикл React ref: почему внутри useEffect на первом рендере уже доступна DOM-нода через ref.current?

DOM-ref присваивается на commit-фазе после создания соответствующего DOM-узла, а effect выполняется уже после этого commit.

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

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

DOM-ref присваивается на commit-фазе после создания соответствующего DOM-узла, а effect выполняется уже после этого commit.

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

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

DOM-ref присваивается на commit-фазе после создания соответствующего DOM-узла, а effect выполняется уже после этого commit.

Поэтому при обычном монтировании видимого элемента useEffect видит ref.current. Во время render узел ещё может отсутствовать, а при условном рендере ref может оставаться null. При удалении элемента React очищает ref. Не считайте доступность DOM гарантированной для любого первого effect: важен фактически смонтированный элемент.

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

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

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

Подробнее