Что такое Ref
Ref (сокращение от reference) в React — это способ получить прямой доступ к DOM-элементу или сохранить значение, которое не вызывает перерисовку компонента при изменении. Ref особенно полезен, когда нужно работать с элементами вне обычного потока данных через props и state.
Создание и использование
Для создания ref используется хук useRef:
const myRef = useRef(initialValue);
После этого myRef.current содержит текущее значение. При первом рендере myRef.current равно переданному начальному значению.
Чтобы привязать ref к DOM-элементу, передайте его в атрибут ref:
<input ref={myRef} />
Теперь myRef.current будет ссылаться на настоящий DOM-элемент <input>.
Отличие от состояния
Основное отличие useRef от useState:
- Изменение
ref.currentне вызывает повторный рендер компонента. refпредназначен для хранения данных, которые нужны между рендерами, но не влияют на то, как компонент выглядит.
Это делает ref идеальным для:
- Хранения ссылок на таймеры, интервалы или внешние объекты
- Сохранения предыдущих значений props или state
- Прямого взаимодействия с DOM (фокус, измерение размеров, воспроизведение видео)
Когда использовать
Используйте ref, когда:
- Нужно управлять фокусом, выделением текста или воспроизведением медиа
- Требуется доступ к DOM-методам (например,
scrollIntoView) - Необходимо хранить значение, которое не должно влиять на UI
Не используйте ref для данных, которые определяют внешний вид компонента — для этого подходит useState.