PassFront
  1. PassFront
  2. База знаний
  3. Продвинутые темы

Что такое refs?

Продвинутые темы

`refs` — это ссылки на DOM-элементы или изменяемые значения в React, дающие прямой доступ к узлу или хранение данных между рендерами без перерисовки.

Два применения

Доступ к DOM

const inputRef = useRef(null);
<input ref={inputRef} />
inputRef.current.focus(); // фокус, размеры, скролл, сторонние библиотеки

Хранение изменяемого значения без ре-рендера

const timerId = useRef(null);
timerId.current = setInterval(...); // не вызывает перерисовку

Применение: id таймеров, предыдущее значение, флаги.

Особенности

  • Изменение ref.current не вызывает ре-рендер (в отличие от state).
  • Читать/менять — в обработчиках и эффектах, не во время рендера.
  • Проброс ref в дочерний компонент: с React 19 — обычным пропом ref, раньше — через forwardRef.
  • useImperativeHandle — кастомный API через ref.

refs против state

  • state — изменение вызывает перерисовку.
  • ref — сохраняет значение без перерисовки.

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

refs (useRef) — доступ к DOM (фокус, размеры, сторонние библиотеки) или хранение изменяемого значения между рендерами без перерисовки (id таймеров, предыдущее значение). Изменение ref.current не триггерит ре-рендер. Проброс — forwardRef.

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