Что такое 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.