Проверяет понимание того, как SPA-приложения сохраняют глобальное состояние при навигации между страницами и почему это отличается от классических многостраничных сайтов.
Вопрос о сохранении глобального состояния напрямую связан с архитектурой приложения: SPA или MPA. В многостраничных приложениях каждый клик по ссылке вызывает новый запрос к серверу, браузер полностью перерисовывает документ, и вся память JavaScript-контекста обнуляется. В SPA навигация обрабатывается на клиенте, поэтому глобальные хранилища продолжают жить между переходами.
Клиентский роутер (например, React Router) перехватывает переход и меняет только ту часть дерева компонентов, которая соответствует новому маршруту. Провайдеры состояния, обёрнутые вокруг роутера, остаются смонтированными, поэтому их данные не теряются.
function App() {
return (
<Provider store={store}> {/* живёт всё время */}
<BrowserRouter>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/profile" element={<Profile />} />
</Routes>
</BrowserRouter>
</Provider>
);
}Если нужно, чтобы данные пережили перезагрузку, их синхронизируют с localStorage, sessionStorage или сервером. Например, Redux Persist автоматически подгружает состояние из localStorage при старте приложения.
const store = configureStore({
reducer,
middleware: (gDM) => gDM({ serializableCheck: false }),
});
// persistStore(store) восстановит state после F5Итог: в SPA глобальное состояние сохраняется при клиентской навигации, потому что страница не перезагружается. Если нужна устойчивость к перезагрузке или шаринг между вкладками, состояние дополнительно персистят в storage или на бэкенд.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию