Przejdź do treści
React od podstawModuł 1 · lekcja 1 z 3
Za darmo4 min czytania

Moduł 1 · Pierwsze kroki z React

Czym jest React: komponenty i deklaratywny interfejs

Po tej lekcji wyjaśnisz, czym jest React, czym różni się deklaratywny opis interfejsu od ręcznej zmiany strony i dlaczego aplikację w React dzielimy na komponenty. Poznasz też przykład, na którym pracujesz przez cały kurs: sklep internetowy fikcyjnej Herbaciarni Liść z Krakowa.

React w jednym zdaniu

React to biblioteka JavaScript do budowania interfejsów użytkownika. Opisujesz w niej, jak ma wyglądać ekran dla danych, które masz w danej chwili, a React sam dba o to, żeby strona w przeglądarce odpowiadała temu opisowi. Bibliotekę stworzyli inżynierowie Facebooka (dziś Meta) i udostępnili ją publicznie w 2013 roku. W październiku 2026 aktualna wersja to React 19.3, wydana 9 września 2026 roku (stan na październik 2026).

Słowo „biblioteka” jest ważne. React zajmuje się widokiem: komponentami, stanem i odświeżaniem ekranu. Nie ma w sobie routingu (wielu podstron), pobierania danych z serwera ani narzędzia do budowania projektu. Te elementy dokładasz osobno albo dostajesz razem w gotowym frameworku. Dokumentacja React zaleca do produkcyjnych aplikacji framework, na przykład React Router w trybie frameworka albo Next.js. Do nauki podstaw dokumentacja wskazuje drogę „od zera”: narzędzie Vite i sam React. Tak pracujemy w tym kursie, bo wtedy widzisz, co robi każdy element, a nie tylko gotowy efekt.

Jeśli trafisz w starszych poradnikach na polecenie create-react-app, pomiń je. Zespół React wycofał Create React App dla nowych projektów w lutym 2025 roku i wskazał Vite jako jedną z alternatyw.

Deklaratywnie, a nie krok po kroku

Weź licznik w menu sklepu: „Koszyk (2)”. Po kliknięciu „Dodaj do koszyka” ma się zmienić na „Koszyk (3)”. W czystym JavaScripcie piszesz instrukcje krok po kroku, czyli imperatywnie:

JavaScript
const licznik = document.querySelector("#koszyk-licznik"); let sztuki = Number(licznik.textContent); sztuki = sztuki + 1; licznik.textContent = sztuki;

To działa, dopóki licznik jest w jednym miejscu. Gdy ta sama liczba pojawi się w menu, na stronie koszyka i w podsumowaniu zamówienia, musisz pamiętać o każdym miejscu. Wystarczy zapomnieć o jednym i klient widzi dwie różne liczby.

W React opisujesz wynik, czyli piszesz deklaratywnie:

JSX
function MenuKoszyka({ sztuki }) { return <a href="/koszyk">Koszyk ({sztuki})</a>; }

Komponent mówi: „dla takiej liczby sztuk menu wygląda tak”. Gdy liczba się zmieni, React wywoła funkcję jeszcze raz, porówna nowy wynik z poprzednim i zmieni w przeglądarce tylko ten fragment, który faktycznie jest inny. Nie piszesz już kodu, który szuka elementów na stronie i je poprawia. Piszesz funkcje, które z danych robią widok.

Jak React odświeża ekran po zmianie danych

Na podstawie dokumentacji react.dev, rozdział Render and Commit, stan na październik 2026.

Komponenty: interfejs z klocków

Komponent to funkcja JavaScript, która zwraca opis fragmentu interfejsu. Nazwa komponentu zaczyna się wielką literą (KartaProduktu, nie kartaProduktu), bo po tym React odróżnia Twoje komponenty od zwykłych znaczników HTML, takich jak div czy button.

Strona katalogu Herbaciarni Liść składa się z kilku komponentów: nagłówka z menu, filtra kategorii, listy produktów i kart pojedynczych herbat. Karta produktu to jeden komponent użyty dwanaście razy, za każdym razem z innymi danymi: inną nazwą, ceną i gramaturą. Gdy zmienisz wygląd karty w jednym pliku, zmieni się na całej stronie.

Komponenty zagnieżdżasz jak znaczniki HTML, więc cała aplikacja tworzy drzewo. Na górze jest App, pod nim nagłówek i strona katalogu, niżej lista i karty. Dane płyną w tym drzewie z góry na dół, od rodzica do dziecka. Tę zasadę rozwiniesz w module 2 przy propsach i w module 3 przy stanie.

Cztery pojęcia, na których opiera się React

Pojęcia z rozdziału Describing the UI w dokumentacji react.dev.

Co zbudujesz w tym kursie

Pracujesz na jednym przykładzie od pierwszej do ostatniej lekcji. Herbaciarnia Liść to fikcyjny sklep z Krakowa, który sprzedaje 12 herbat w czterech kategoriach: zielone, czarne, ziołowe i owocowe. Ceny podajemy w złotych, na przykład Sencha Fukuyu kosztuje 34,90 zł za 100 g. W kolejnych modułach zbudujesz katalog z filtrem, koszyk liczący sumę w groszach, formularz zamówienia z walidacją polskiego kodu pocztowego, pobieranie produktów z pliku JSON, podstrony z React Router i testy automatyczne. W projekcie końcowym dodasz wyszukiwarkę, sortowanie i kod rabatowy.

Do każdego modułu dostajesz paczkę z plikami ćwiczeniowymi: gotowy projekt Vite, który uruchomisz u siebie, i rozwiązania ćwiczeń. Potrzebujesz komputera z Node.js, edytora kodu (na przykład Visual Studio Code) i przeglądarki. Instalację przejdziesz krok po kroku w następnej lekcji.

Najważniejsze w 3 punktach

  1. React to biblioteka do widoku: opisujesz, jak ekran wygląda dla danych, a React sam aktualizuje stronę po ich zmianie.
  2. Interfejs składasz z komponentów, czyli funkcji o nazwach z wielkiej litery, które tworzą drzewo, a dane płyną w nim z góry na dół.
  3. Nowy projekt do nauki zaczynasz od Vite (stan na październik 2026); Create React App jest wycofane dla nowych aplikacji.

Źródła

Materiały do pobrania

Pliki do ćwiczeń są dostępne w abonamencie.

  • Pierwszy projekt Vite + React i rozwiązania JSXModuł 1: projekt startowy (npm install, npm run dev), rozwiązania ćwiczeń 1.2 i 1.3: powitanie sklepu, stopka w JSX, cena w groszach5 KBDostępne w abonamencie
  • 12 herbat, karta produktu i lista z kluczem keyModuł 2: dane produkty.js, KartaProduktu z props, rozwiązania 2.1–2.3 (cena za 100 g, lista z dostępnością, obsługa kliknięć)7 KBDostępne w abonamencie
  • Stan koszyka w App, formularz zamówienia z walidacjąModuł 3: koszyk podniesiony do App, FormularzZamowienia, walidacja kodu pocztowego, rozwiązania 3.1–3.3 (wybór ilości, telefon, panel koszyka z dostawą)10 KBDostępne w abonamencie
  • Pobieranie produktów z JSON, efekty i localStorageModuł 4: public/produkty.json, Katalog z fetch i AbortController, rozwiązania 4.1–4.3 (tytuł karty i zapis koszyka, ponowna próba, usunięcie zbędnych efektów)11 KBDostępne w abonamencie
  • Reducer koszyka z testami, Context i własne hookiModuł 5: koszykReducer z testami Vitest, useProdukty, rozwiązania 5.1–5.3 (akcja dodaj_ilosc, KoszykContext, useLocalStorage)18 KBDostępne w abonamencie
  • Aplikacja z React Router 8 i 12 testamiModuł 6: trasy, strona produktu, koszyk, testy Vitest i Testing Library, rozwiązania 6.1–6.3 (strona podziękowania, dwa testy, lazy i zmienna VITE_)19 KBDostępne w abonamencie
  • Projekt końcowy: szablon, rozwiązanie i wyniki kontrolneModuł 7: start/ (14 testów), rozwiazanie/ (21 testów), README ze specyfikacją i kluczem oceny, kontrola.py z wynikami kontrolnymi38 KBDostępne w abonamencie

Następna: Pierwszy projekt w Vite: instalacja i struktura

20 lekcji, pliki i certyfikat w abonamencie.

Program kursu

Karta wymagana · anulujesz jednym kliknięciem · Mam już konto