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

Что такое Ref?

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

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

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

1. Доступ к DOM-узлу

function Input() {
  const inputRef = useRef(null);
  const focus = () => inputRef.current.focus();
  return (
    <>
      <input ref={inputRef} />
      <button onClick={focus}>Фокус</button>
    </>
  );
}

Применение: фокус, измерение размеров, интеграция с не-React библиотеками, медиа.

2. Хранение изменяемого значения

useRef хранит .current, который сохраняется между рендерами и не вызывает перерисовку при изменении:

const timerId = useRef(null);
timerId.current = setInterval(...);

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

Отличие от state

  • Изменение state → перерисовка.
  • Изменение ref → без перерисовки, значение просто сохраняется.

forwardRef

Позволяет прокинуть ref в дочерний компонент до его DOM-узла. С React 19 ref передаётся как обычный проп, и forwardRef больше не нужен.

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

ref (useRef) даёт прямой доступ к DOM-узлу (фокус, размеры, сторонние библиотеки) или хранит изменяемое значение между рендерами без перерисовки. В отличие от state, изменение .current не вызывает ре-рендер.

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