Выбор ответа Middle Состояние и данные спрашивают часто обновлено
React Context и производительность
Вопрос
В контекст положили объект с корзиной и текущим временем, которое обновляется каждую секунду. Что произойдёт?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Каждую секунду будут перерисовываться все потребители контекста. Context не умеет подписывать на часть значения: при изменении значения (нового объекта) перерисовываются все, кто вызвал useContext.
Варианты ответа
- Перерисуются только компоненты, которые читают из контекста время
- Контекст не умеет хранить объекты, значение превратится в строку
- React объединит обновления контекста и перерисует потребителей раз в минуту
- Каждую секунду будут перерисовываться все потребители контекстаправильный ответ
Разбор
Context не умеет подписывать на часть значения: при изменении значения (нового объекта) перерисовываются все, кто вызвал useContext. Решения: разделить на несколько контекстов, вынести часто меняющееся значение в отдельный, использовать стор с селекторами (Zustand, Redux). Объекты в контексте хранить можно, автоматического прореживания нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.