0Pricing
React Academy · Lekcja

Komponenty serwerowe React — wyjaśnienie

Poznanie RSC, ich różnic względem komponentów klienckich oraz sytuacji, w których należy używać każdego z tych rodzajów.

Komponenty serwerowe React — wyjaśnienie to bezpłatna lekcja React Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.

Wprowadzenie

W tej lekcji dowiesz się, czym są React Server Components (RSC), czym różnią się od komponentów klienckich i kiedy używać każdego z tych typów.

Dwa światy komponentów

React 19 i Next.js App Router dzielą komponenty na dwa światy: **komponenty serwerowe** (renderowane na serwerze, bez interaktywności) oraz **komponenty klienckie** (renderowane zarówno na serwerze, jak i na kliencie, z obsługą stanu i zdarzeń).

Komponenty serwerowe domyślnie

W Next.js App Router każdy komponent jest domyślnie komponentem serwerowym. Tryb komponentu klienckiego można włączyć, dodając na początku pliku 'use client'.
// Server Component (default, no directive needed)
export default async function Page() {
  const data = await fetch('/api/posts').then(r => r.json());
  return <ul>{data.map(p => <li key={p.id}>{p.title}</li>)}</ul>;
}

Komponenty klienckie

Dodaj 'use client' na początku pliku, aby przekształcić go w komponent kliencki. Komponenty klienckie mogą używać useState, useEffect, procedur obsługi zdarzeń i API przeglądarki.
'use client';
import { useState } from 'react';

export function Counter() {
  const [n, setN] = useState(0);
  return <button onClick={() => setN(n+1)}>{n}</button>;
}

Możliwości komponentów serwerowych

Komponenty serwerowe mogą: oczekiwać na zapytania do bazy danych, odczytywać system plików, uzyskiwać dostęp do sekretów środowiskowych, importować duże pakiety dostępne tylko na serwerze oraz renderować bez wysyłania jakiegokolwiek JavaScriptu do klienta.
// Fetch from DB directly in the component!
import { db } from '@/lib/db';

export default async function UserList() {
  const users = await db.select().from(usersTable);
  return <ul>{users.map(u => <li key={u.id}>{u.name}</li>)}</ul>;
}

Ograniczenia komponentów serwerowych

Komponenty serwerowe NIE MOGĄ: używać useState, useEffect, procedur obsługi zdarzeń (onClick itd.), API przeglądarki (window, localStorage) ani Context. Te funkcje wymagają 'use client'.

Łączenie komponentów serwerowych i klienckich

Typowy wzorzec wygląda następująco: komponent serwerowy pobiera dane i przekazuje je komponentowi klienckiemu jako props. Serwer obsługuje dane, a klient — interakcję.
// Server Component
export default async function Page() {
  const user = await getUser();
  return <ProfileEditor user={user} />; // client component
}

// Client Component (separate file)
'use client';
export function ProfileEditor({ user }) {
  const [name, setName] = useState(user.name);
  return <input value={name} onChange={e => setName(e.target.value)} />;
}

Reguła granicy klienta

Po oznaczeniu pliku jako 'use client' wszystkie importowane przez niego komponenty są również traktowane jako komponenty klienckie. Granica między serwerem a klientem przebiega na poziomie pliku.

Brak JavaScriptu dla komponentów serwerowych

Komponenty serwerowe renderują się do HTML na serwerze. Ich kod NIGDY nie jest wysyłany do przeglądarki. Znacząco zmniejsza to rozmiar paczki JavaScriptu.

Komponenty serwerowe a SSR

Tradycyjne SSR renderuje całą stronę do HTML, ale wysyła cały kod komponentów do klienta w celu hydratacji. Komponenty serwerowe w ogóle nie wysyłają swojego kodu do klienta — tylko wyrenderowany wynik.

Szybkie sprawdzenie

Jaką dyrektywę należy dodać do pliku, aby przekształcić go w komponent kliencki Reacta w Next.js App Router?

Podsumowanie

Komponenty serwerowe działają na serwerze, mogą uzyskiwać dostęp do baz danych i sekretów oraz nie wysyłają JS do klienta. Komponenty klienckie używają 'use client' i obsługują stan, efekty oraz procedury obsługi zdarzeń. Łącz je: serwer pobiera dane, a klient obsługuje interakcję.

Następna lekcja

Następna lekcja: **Hook use() do zasobów asynchronicznych** — nauczysz się odczytywać obietnice i wartości kontekstu podczas renderowania za pomocą hooka use() z React 19.

Często zadawane pytania

Czy lekcja „Komponenty serwerowe React — wyjaśnienie” jest bezpłatna?

Tak — pełny tekst „Komponenty serwerowe React — wyjaśnienie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Komponenty serwerowe React — wyjaśnienie”?

Poznanie RSC, ich różnic względem komponentów klienckich oraz sytuacji, w których należy używać każdego z tych rodzajów. Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć React Academy?

Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Komponenty serwerowe React — wyjaśnienie”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?

Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Komponenty serwerowe React — wyjaśnienie
  2. Hook use() do zasobów asynchronicznych
  3. Akcje React i useActionState
  4. useOptimistic do natychmiastowego sprzężenia zwrotnego
← Powrót do React Academy