Выбор ответа Junior Ref и DOM обновлено

DOM-ref во время рендера

Вопрос

Что выведет console.log при первом рендере?

function Search() {
  const inputRef = useRef(null);
  console.log(inputRef.current);
  return <input ref={inputRef} />;
}

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: null. Во время рендера DOM-узел ещё не создан, React записывает его в ref.current в фазе коммита.

Варианты ответа

  1. Элемент <input>
  2. undefined
  3. nullправильный ответ
  4. Ошибку: ref нельзя читать

Разбор

Во время рендера DOM-узел ещё не создан, React записывает его в ref.current в фазе коммита. Начальное значение null передано в useRef, поэтому выводится null, а не undefined. Читать ref можно без ошибки, но в рендере это не рекомендуется.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме