Перенесите запросы в эффект или специализированный загрузчик с зависимостью userId и защитой от устаревших ответов. CanEdit вычисляйте из актуальных roles; useMemo не предназначен для сетевых эффектов.
Как разделить загрузку user/roles и вычисляемые данные?
Перенесите запросы в эффект или специализированный загрузчик с зависимостью userId и защитой от устаревших ответов. CanEdit вычисляйте из актуальных roles; useMemo не предназначен для сетевых эффектов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
React-экран получает userId. User и roles загружаются независимо, а canEdit вычисляется по roles. Сейчас useMemo выполняет fetch, useEffect имеет пустые зависимости, canEdit хранится в отдельном state. Как перестроить поток данных?
Ответ
Перенесите запросы в эффект или специализированный загрузчик с зависимостью userId и защитой от устаревших ответов. CanEdit вычисляйте из актуальных roles; useMemo не предназначен для сетевых эффектов.
Независимые запросы можно запускать параллельно, но заранее определить, допустим ли частичный результат. При смене пользователя прежние данные сбрасывают или явно маркируют как устаревшие. Loading и ошибки принадлежат текущему поколению запроса. Сервер всё равно проверяет право редактирования: клиентский canEdit только управляет интерфейсом. Не храните несколько несинхронизированных копий одной производной информации.