Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

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

Как связать внешний объект с React через useRef?

Вопрос проверяет понимание роли useRef и его отличий от useState при работе с внешними и мутабельными объектами.

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

useRef позволяет хранить ссылку на внешний объект между рендерами без их запуска. Через ref.current можно читать и изменять данные, но React не будет автоматически перерисовываться. Чтобы изменения отразились в UI, нужно дополнительно инициировать ререндер, например через useState или подписку. useRef подходит для хранения ссылок, а не реактивного состояния.

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

useRef часто используют неправильно, ожидая от него поведения useState.

Определение

useRef — это хук для хранения мутабельного значения, которое сохраняется между рендерами, но не влияет на рендеринг.

Как useRef связывает внешний объект

Перед деталями важно понять его роль:

  • useRef — контейнер для ссылки.

  • React не следит за изменениями ref.current.

Пример использования

function Component({ externalObject }) {
  const objectRef = useRef(externalObject);

  useEffect(() => {
    objectRef.current = externalObject;
  }, [externalObject]);

  return null;
}
  1. Ссылка на объект сохраняется между рендерами.

  2. Мутации objectRef.current не вызывают ререндер.

Когда это полезно

  1. Таймеры, WebSocket, подписки.

  2. Кэш значений между рендерами.

  3. Интеграция с imperative API.

Как отразить изменения в UI

Если нужно показать изменения пользователю:

  1. Либо связать useRef с useState.

  2. Либо использовать подписку и useSyncExternalStore.

objectRef.current.value = 42;
setTick((v) => v + 1); // инициируем ререндер

Вывод

useRef — это инструмент для хранения ссылок и мутабельных объектов, но не для реактивного состояния. Для UI-обновлений его всегда нужно комбинировать с механизмами рендера React.

Уровень

  • Рейтинг:

    3

  • Сложность:

    6

Навыки

  • React

    React

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

#useref

#external

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