Вопрос проверяет понимание различий между состоянием и ссылками в React и их влияния на рендеринг.
Изменение ref.current не вызывает перерендер компонента.
React не отслеживает изменения внутри ref.
Это сделано намеренно для хранения служебных данных.
Поэтому useRef подходит для значений, которые не должны влиять на UI.
Важно чётко понимать, какие изменения React отслеживает, а какие — нет.
ref.current — это мутабельное поле объекта, возвращаемого useRef, изменения которого не участвуют в механизме рендеринга React.
React:
отслеживает изменения state и props
не подписывается на изменения ref.current
считает ref хранилищем вне UI-логики
const countRef = useRef(0);
countRef.current += 1;
// компонент не перерендерится
Такое поведение удобно для:
хранения таймеров
хранения предыдущих значений
счётчиков, не влияющих на интерфейс
интеграций с внешними API
Новички часто:
пытаются хранить данные UI в ref
ожидают автоматическое обновление интерфейса
Если данные влияют на отображение, нужно использовать useState.
Изменение ref.current не вызывает перерендер. useRef предназначен для данных, не связанных с UI.