Выбор ответа Middle Состояние и данные спрашивают часто обновлено

React Context и производительность

Вопрос

В контекст положили объект с корзиной и текущим временем, которое обновляется каждую секунду. Что произойдёт?

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

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

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

Коротко

Правильный ответ: Каждую секунду будут перерисовываться все потребители контекста. Context не умеет подписывать на часть значения: при изменении значения (нового объекта) перерисовываются все, кто вызвал useContext.

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

  1. Перерисуются только компоненты, которые читают из контекста время
  2. Контекст не умеет хранить объекты, значение превратится в строку
  3. React объединит обновления контекста и перерисует потребителей раз в минуту
  4. Каждую секунду будут перерисовываться все потребители контекстаправильный ответ

Разбор

Context не умеет подписывать на часть значения: при изменении значения (нового объекта) перерисовываются все, кто вызвал useContext. Решения: разделить на несколько контекстов, вынести часто меняющееся значение в отдельный, использовать стор с селекторами (Zustand, Redux). Объекты в контексте хранить можно, автоматического прореживания нет.

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

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