Проверяет понимание причин hydration mismatch в SSR-приложениях при обращении к браузерным API во время рендера.
В SSR-приложениях (Next.js, Remix, Nuxt) HTML формируется на сервере, где нет объектов window, localStorage или document. Если компонент во время рендера читает эти значения, сервер отдаёт разметку, основанную на заглушке или значении по умолчанию, а клиент при гидратации получает уже реальные данные из браузера. React сравнивает серверный HTML с тем, что рендерит клиент, и при несовпадении выбрасывает ошибку hydration mismatch.
function Theme() {
// На сервере window нет — упадёт или вернёт undefined
const theme = localStorage.getItem('theme') || 'light';
return <div className={theme}>Hello</div>;
}
useEffect после монтирования.isMounted или useState с начальным значением по умолчанию.ssr: false или suppressHydrationWarning для точечных случаев.function Theme() {
const [theme, setTheme] = useState('light');
useEffect(() => {
setTheme(localStorage.getItem('theme') || 'light');
}, []);
return <div className={theme}>Hello</div>;
}
Итог: применяйте чтение браузерных API только после монтирования компонента, чтобы серверный и клиентский рендер совпадали и гидратация проходила без ошибок.
Уровень
Рейтинг:
5
Сложность:
6
Навыки
JavaScript
React
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию