Ответ
Серверные компоненты (Server Components) рендерятся на сервере и передаются клиенту в виде готового HTML. Они не имеют доступа к браузерным API (localStorage, window), не поддерживают хуки (useState, useEffect) и не могут использовать интерактивность. Оптимальны для статического контента.
Клиентские компоненты (Client Components) рендерятся в браузере, поддерживают хуки, состояния и браузерные API. Подходят для интерактивных элементов (формы, анимации).
Пример (Next.js):
// Server Component (не может использовать useState)
export default function ServerComponent() {
return <div>Static content</div>;
}
// Client Component (должен быть помечен 'use client')
'use client';
export default function ClientComponent() {
const [count, setCount] = useState(0);
return <button onClick={() => setCount(c => c + 1)}>{count}</button>;
}