Состояние LocalStorage и React не сбрасывается после развертывания Firebase, но работает корректно в локальной разработке
Столкнулась с проблемой, которая возникает только после деплоя на Firebase Hosting — локально всё работает идеально.
? Как работает локально
Во время локальной разработки данные игрока корректно сохраняются и очищаются:
при нажатии пользователем на кнопку Exit:
его статистика и данные полностью удаляются из localStorage;
массив players сбрасывается к defaultPlayers;
пользователь возвращается на страницу Login;
при повторном входе он может залогиниться под новым ником, при этом статистика старого игрока не сохраняется (хранится только в localStorage на время сессии и полностью очищается после выхода).
? Проблема после деплоя на Firebase
После публикации на Firebase Hosting поведение становится другим:
После выхода одного игрока через кнопку Exit, следующий игрок получает его старую статистику из localStorage, несмотря на то, что объект userStats очищается в handleExit().
Данные пользователя не удаляются из массива players, хотя в handleExit() выполняется переинициализация:
setPlayers(defaultPlayers);
Но в новой сессии новый игрок всё ещё видит старого игрока в таблице рейтинга.
То есть в продакшене создаётся ощущение, будто localStorage.removeItem() или сброс state не срабатывают — хотя локально всё работает корректно.
❓ Вопросы
Почему после деплоя на Firebase старые данные userStats и players продолжают появляться, хотя они были очищены в функции handleExit?
Как правильно очистить и переинициализировать:
объект userStats,
массив players,
данные в localStorage,чтобы новая сессия начиналась с нуля, как это происходит локально?
Может ли быть, что usePersistedState или механизм обновления состояния React работает иначе в продакшене?
? Исходный код
Ссылка на GitHub (ветка main): https://github.com/Neo-o-svg/Tic-tac-toe-task01/tree/main
Firebase Hosting URL: https://tic-tac-toe-reactapp.web.app
Буду благодарна за любые подсказки — что упускаю и как корректно сбрасывать данные, чтобы новая сессия игрока не получала статистику предыдущего.