Как разделить загрузку user/roles и вычисляемые данные?

Перенесите запросы в эффект или специализированный загрузчик с зависимостью userId и защитой от устаревших ответов. CanEdit вычисляйте из актуальных roles; useMemo не предназначен для сетевых эффектов.

Короткий ответ

Что ответить на собеседовании

Перенесите запросы в эффект или специализированный загрузчик с зависимостью userId и защитой от устаревших ответов. CanEdit вычисляйте из актуальных roles; useMemo не предназначен для сетевых эффектов.

Подробный разбор

Ответ с пояснениями

Условие

React-экран получает userId. User и roles загружаются независимо, а canEdit вычисляется по roles. Сейчас useMemo выполняет fetch, useEffect имеет пустые зависимости, canEdit хранится в отдельном state. Как перестроить поток данных?

Ответ

Перенесите запросы в эффект или специализированный загрузчик с зависимостью userId и защитой от устаревших ответов. CanEdit вычисляйте из актуальных roles; useMemo не предназначен для сетевых эффектов.

Независимые запросы можно запускать параллельно, но заранее определить, допустим ли частичный результат. При смене пользователя прежние данные сбрасывают или явно маркируют как устаревшие. Loading и ошибки принадлежат текущему поколению запроса. Сервер всё равно проверяет право редактирования: клиентский canEdit только управляет интерфейсом. Не храните несколько несинхронизированных копий одной производной информации.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее