Разделите user и roles на разные контексты либо используйте хранилище с селекторами: useContext подписывает компонент на весь value.
Компонент использует контекст с user и roles. Если компонент использует из контекста только user, он всё равно будет перерендериваться при изменении roles. Как это исправить?
Разделите user и roles на разные контексты либо используйте хранилище с селекторами: useContext подписывает компонент на весь value.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Разделите user и roles на разные контексты либо используйте хранилище с селекторами: useContext подписывает компонент на весь value.
При изменении значения Provider React уведомляет всех потребителей этого контекста, даже если они прочитали только user. useMemo стабилизирует объект value при неизменных зависимостях, но не устраняет уведомление при реальном изменении roles. React.memo само по себе обновление контекста не блокирует.