Выбор ответа Senior Context и стейт-менеджеры обновлено
Зачем useSyncExternalStore
Вопрос
Для чего в React 18+ появился useSyncExternalStore?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Читать внешний стор при конкурентном рендере без tearing. При конкурентном рендере React может прерывать работу.
Варианты ответа
- Читать внешний стор при конкурентном рендере без tearingправильный ответ
- Синхронизировать состояние между вкладками браузера
- Заменить
useEffectдля любых подписок на события DOM - Сделать
setStateсинхронным для внешних библиотек
Разбор
При конкурентном рендере React может прерывать работу. Если внешний стор изменится посередине, часть дерева покажет старое значение, часть новое («разрыв», tearing). useSyncExternalStore(subscribe, getSnapshot) гарантирует согласованный снимок. На нём построены Redux (react-redux) и Zustand.
- Синхронизацию между вкладками он не делает.
- Подписка на события DOM обычно остаётся в
useEffect; хук нужен для источников, из которых читают состояние во время рендера. setStateот него не меняется.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
staleTime по умолчанию в TanStack Query
Следующий вопрос
Селектор Zustand, возвращающий объект