Почему ref может сохранить устаревшее значение прав?

Ref не пересоздаётся автоматически при изменении isAdmin, поэтому список может устареть. Производные действия вычисляют из актуальных props/state; реальный доступ обязательно проверяет backend.

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

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

Ref не пересоздаётся автоматически при изменении isAdmin, поэтому список может устареть. Производные действия вычисляют из актуальных props/state; реальный доступ обязательно проверяет backend.

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

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

Условие

React-хук один раз сохраняет разрешённые действия в useRef, исходя из isAdmin при монтировании. Позже isAdmin меняется, но ref не пересчитывается. UI использует сохранённый список. В чём ошибка и где должна проверяться авторизация?

Ответ

Ref не пересоздаётся автоматически при изменении isAdmin, поэтому список может устареть. Производные действия вычисляют из актуальных props/state; реальный доступ обязательно проверяет backend.

Для короткого списка достаточно расчёта во время рендера; для дорогого — useMemo с полной зависимостью от isAdmin и других входов. Не следует хранить производную копию без механизма синхронизации. Скрытая кнопка или обновлённый ref не являются защитой: пользователь может вызвать API напрямую. Сервер должен проверять права на каждый чувствительный запрос независимо от клиентского состояния.

Источник: react.dev.

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

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

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

Подробнее