Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про React: ref, useref

Почему изменение значения ref не вызывает перерендер?

Вопрос проверяет понимание механизма рендера React и различий между state и ref.

Короткий ответ

ref используется для хранения мутабельных значений.
Изменение ref.current не отслеживается React.
Ререндер вызывается только изменением state или props.
ref не участвует в процессе рендера.

Длинный ответ

В React есть четкое разделение между данными, влияющими на UI, и вспомогательными значениями.

Определение

ref — это объект с полем current, предназначенный для хранения значений, которые не должны вызывать перерендер.

Почему ref не вызывает ререндер

React не отслеживает изменения ref.current, потому что:

  1. ref не участвует в reconciliation

  2. ref предназначен для императивных операций

  3. Автоматический ререндер снизил бы производительность

Пример:

const countRef = useRef(0);

countRef.current += 1; // ререндер не происходит

Когда использовать ref

ref применяется для:

  • доступа к DOM-элементам

  • хранения таймеров и id

  • сохранения предыдущих значений

  • работы с внешними библиотеками

Сравнение со state

  • state:

    • вызывает ререндер

    • используется для UI

  • ref:

    • не вызывает ререндер

    • используется для служебных данных

Вывод

ref не вызывает перерендер, потому что он не предназначен для управления UI. Если изменение должно отразиться в интерфейсе, нужно использовать state.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • React

    React

Ключевые слова

#ref

#useref

Подпишись на React Developer в телеграм