Ref не пересоздаётся автоматически при изменении isAdmin, поэтому список может устареть. Производные действия вычисляют из актуальных props/state; реальный доступ обязательно проверяет backend.
Почему ref может сохранить устаревшее значение прав?
Ref не пересоздаётся автоматически при изменении isAdmin, поэтому список может устареть. Производные действия вычисляют из актуальных props/state; реальный доступ обязательно проверяет backend.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
React-хук один раз сохраняет разрешённые действия в useRef, исходя из isAdmin при монтировании. Позже isAdmin меняется, но ref не пересчитывается. UI использует сохранённый список. В чём ошибка и где должна проверяться авторизация?
Ответ
Ref не пересоздаётся автоматически при изменении isAdmin, поэтому список может устареть. Производные действия вычисляют из актуальных props/state; реальный доступ обязательно проверяет backend.
Для короткого списка достаточно расчёта во время рендера; для дорогого — useMemo с полной зависимостью от isAdmin и других входов. Не следует хранить производную копию без механизма синхронизации. Скрытая кнопка или обновлённый ref не являются защитой: пользователь может вызвать API напрямую. Сервер должен проверять права на каждый чувствительный запрос независимо от клиентского состояния.
Источник: react.dev.