Context или стейт-менеджер
Вопрос
Чем Context отличается от стейт-менеджера и когда что выбирать?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Context передаёт значение вниз, а не управляет состоянием
При смене значения провайдера перерисовываются все потребители
Нет селекторов: нельзя подписаться на часть значения
Context хорош для редко меняющегося: тема, локаль, пользователь, DI
Для частых обновлений стор с селекторами (Zustand, Redux) или разделение контекстов
Что могут спросить следом
- Как оптимизировать контекст, если стора нет?
- Что такое
useSyncExternalStore?
Разбор
Context это механизм доставки значения через дерево без пробрасывания пропсов, а состояние в нём всё равно живёт в useState или useReducer провайдера. Проблема в том, что при изменении значения перерисуются все, кто вызывает useContext, и подписаться на кусок нельзя. Поэтому Context идеален для того, что меняется редко: тема, локаль, текущий пользователь, зависимости вроде API-клиента. Для часто меняющегося общего состояния беру стор с селекторами, например Zustand: он перерисует только тех, чей кусок изменился. Если стора нет, можно разделить контексты по частоте изменений и мемоизировать значение провайдера.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.