Выбор ответа Senior Context и стейт-менеджеры обновлено

Зачем useSyncExternalStore

Вопрос

Для чего в React 18+ появился useSyncExternalStore?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Читать внешний стор при конкурентном рендере без tearing. При конкурентном рендере React может прерывать работу.

Варианты ответа

  1. Читать внешний стор при конкурентном рендере без tearingправильный ответ
  2. Синхронизировать состояние между вкладками браузера
  3. Заменить useEffect для любых подписок на события DOM
  4. Сделать setState синхронным для внешних библиотек

Разбор

При конкурентном рендере React может прерывать работу. Если внешний стор изменится посередине, часть дерева покажет старое значение, часть новое («разрыв», tearing). useSyncExternalStore(subscribe, getSnapshot) гарантирует согласованный снимок. На нём построены Redux (react-redux) и Zustand.

  • Синхронизацию между вкладками он не делает.
  • Подписка на события DOM обычно остаётся в useEffect; хук нужен для источников, из которых читают состояние во время рендера.
  • setState от него не меняется.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме