Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

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

Что такое useSyncExternalStore и для чего он нужен?

Вопрос проверяет знание современного API React и понимание проблем, связанных с внешним состоянием и concurrent rendering.

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

useSyncExternalStore — это хук React для безопасного подключения внешнего состояния к рендерингу. Он позволяет подписаться на внешний стор и гарантирует, что компонент всегда рендерится с актуальными данными. Этот хук решает проблемы, которые возникают при ручных подписках в условиях concurrent rendering и Strict Mode. Его используют как основу для state-менеджеров.

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

useSyncExternalStore появился как ответ на реальные архитектурные проблемы React.

Определение

useSyncExternalStore — это хук, который синхронизирует внешний источник данных с React-рендерингом, обеспечивая консистентность состояния во всех режимах работы React.

Почему старые подходы стали проблемой

Перед введением этого хука часто делали так:

  1. Подписка в useEffect.

  2. Внутри — setState для ререндера.

Проблемы:

  1. Возможны рассинхронизации данных.

  2. Некорректная работа в concurrent rendering.

  3. Двойные подписки в StrictMode.

Как работает useSyncExternalStore

Хук принимает:

  1. Функцию подписки.

  2. Функцию чтения текущего состояния.

const value = useSyncExternalStore(
  store.subscribe,
  store.getSnapshot
);

Что происходит:

  1. React читает текущее состояние синхронно.

  2. Подписывается на изменения.

  3. При изменении корректно планирует ререндер.

Почему он считается “правильным”

  1. React сам управляет моментом чтения данных.

  2. Исключаются “рваные” состояния между рендерами.

  3. Поведение предсказуемо даже при прерываемых рендерах.

Где используется на практике

  1. Redux (useSelector внутри).

  2. Zustand.

  3. Любые кастомные external store.

Вывод

useSyncExternalStore нужен для того, чтобы безопасно и корректно связать внешний стор с React, не ломая архитектуру и не рискуя багами в будущем.

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • React

    React

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

#usesyncexternalstore

#external

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