od Podstaw
5 godz. 59 min · ReactJS · Full-stack i Programowanie
Michał JabłońskiReact przeszedł długą ścieżkę rozwoju i część z jego funkcjonalności nie są już powszechnie używane. Dlatego w tym kursie skupimy się na najnowszych technikach pracy z biblioteką - poznasz współczesne podejście do budowania komponentów z wykorzystaniem hooks (useState, useEffect), zrozumiesz zasady kompozycji i zarządzania stanem aplikacji. Pokażemy Ci też jak efektywnie korzystać z narzędzi deweloperskich, debugować kod i wdrażać aplikacje na produkcję z użyciem współczesnych platform jak Vercel.
Hooki to fundament nowoczesnego Reacta, który całkowicie zmienił sposób tworzenia komponentów. W kursie nauczysz się efektywnie zarządzać stanem aplikacji używając useState, wykorzystywać useEffect do operacji lifecycle i side-effects, oraz poznasz reguły korzystania z hooków. Wszystko to przećwiczysz w praktycznych zadaniach, takich jak implementacja filtrowania listy elementów, gdzie zastosujesz zdobytą wiedzę w realnym scenariuszu.
Obsługa formularzy to nieodłączny element każdej aplikacji webowej. Pokażemy Ci jak kontrolować wartości pól input, wykorzystać popularną bibliotekę Formik do zarządzania złożonymi formularzami oraz implementować walidację danych. Wiedza ta zostanie utrwalona poprzez praktyczne zadanie, w którym rozwiniesz formularz o dodatkowe pola i zastosujesz poznane techniki w rzeczywistym przypadku użycia.
Większość aplikacji wymaga komunikacji z serwerem. Nauczysz się jak poprawnie wykonywać operacje asynchroniczne w komponentach React, obsługiwać stany ładowania i błędów, oraz efektywnie korzystać z klienta HTTP do zapytań AJAX. Zaczniesz od pracy z przygotowanym mockiem API, by następnie przejść do prawdziwej integracji z back-endem. W praktycznym zadaniu zaimplementujesz pełny przepływ danych - od pobrania, przez wyświetlenie, aż po wysłanie na serwer.
Poza budową aplikacji React, w kursie znajdziesz także moduł poświęcony wdrażaniu aplikacji na produkcję. Poznasz prawidłową konfigurację serwera produkcyjnego dla architektury SPA, nauczysz się zarządzać zmiennymi środowiskowymi poprzez pliki .env oraz przeprowadzisz deployment na platformie Vercel. Dzięki temu Twoja aplikacja będzie nie tylko działać lokalnie, ale także będzie gotowa do użycia przez realnych użytkowników w internecie.
Nowoczesny React stworzyliśmy z myślą o osobach, które chcą nauczyć się Reacta i jednocześnie znają JavaScript. Niezależnie od tego, czy React jest Twoim pierwszym frameworkiem, czy masz już doświadczenie w pracy np. ze Svelte czy Vue, ten materiał jest dla Ciebie. Wskazane jest również posiadanie ogólnej wiedzy na temat tworzenia interfejsów z HTML i CSS oraz obsługi narzędzi takich jak Git czy podstawy pracy z terminalem.
Nasza aplikacja wygląda coraz lepiej, mamy coraz to więcej funkcjonalności,
wygląda to fajnie, natomiast jeszcze nie mamy rozwiązanego tematu routingu.
Czyli zobacz, gdybyśmy chcieli sobie przejść do strony Exchange, ta
strona po prostu nie działa.
Nie mamy tutaj nic co obsługuje tą stronę.
Z jednej strony Exchange działa jako ścieżka.
Zauważ dlatego, że mamy tutaj konfigurację pod SPA z automatu
skonfigurowaną przez Wita.
Natomiast z drugiej strony jak gdyby nic się nie dzieje na Osom React.
Gdybyśmy chcieli sobie zobaczyć to źródło i rozwiązać nasz problem, czyli tak
zwany problem routingu React routing.
Będziemy mieli trzy biblioteki do wyboru.
Jest tam taki router router.
No i tutaj mamy React router.
My użyjemy React routera.
Tutaj zobacz jest w takiej wersji szóstej i to co potrzebujemy to
jest dokładnie client side.
Routing To jest dokładnie to.
Potrzebujemy właśnie czegoś takiego.
Potrzebujemy zainstalować biblioteki React router dom i wtedy utworzyć sobie tablicę
routingu, a później podczepić ją właśnie w ten sposób do naszej aplikacji.
Spróbujmy sobie to zrobić, czyli zaimportujmy sobie.
Create browser router właśnie z React. Router dom.
Pierwsza rzecz, którą musimy zrobić w naszej aplikacji to oczywiście
zainstalowanie React router dom.
Użyjemy do tego komendy npm i React router dom.
Teraz, jeżeli React router dom jest zainstalowany.
Spróbujmy sobie tutaj zrobić osobne miejsce na routing.
Mamy coś takiego jak routing i tutaj niech będzie nasz router.
Zauważ tutaj, że będziemy potrzebowali router jako JSX file, dlatego, że tutaj
będziemy stosować zapisy związane z komponentami, czyli będziemy stosować JSX.
Tutaj zróbmy sobie ten create browser router jako const router, ponieważ chcemy
żeby tutaj pozostała cała konfiguracja.
Do tego Create browser router dodajemy sobie export tak żebyśmy mieli export
router i zaimportowali sobie to właśnie w JS.
I tutaj w naszym przypadku stosujemy taką konfigurację.
Czyli mamy kolejne, kolejne w tej tablicy.
Zauważ obiekty będą konfigurowały kolejne ścieżki, czyli tutaj na tej
zasadzie możemy sobie dodać path.
Na tej głównej ścieżce chcemy osadzić nasz komponent page.
To będzie dokładnie people page.
Zobaczmy jak będzie to działać.
Jeżeli teraz wrócimy do naszej aplikacji, chcielibyśmy sobie People Page osadzić.
Musimy ten router wpiąć sobie tutaj do main JS.
Zauważ, że tutaj zostało to zrobione w ten sposób router provider router i
będziemy mieli tutaj to router provider.
Importujemy sobie ten router provider z React router dom.
JSX już nie potrzebujemy.
I tutaj w router wrzucamy sobie router jako tablicę routingu.
Zobacz, że jest to routing router JSX.
I teraz widzimy, że exchange nie do końca działa, ale jeżeli wejdziemy na główną
stronę dostajemy list of people.
Nie do końca tego się spodziewaliśmy, dlatego, że router provider teraz osadza.
Zauważ ten element na górze ścieżki, co oznacza, że zrezygnowaliśmy z
abkomponentu, który mamy tutaj.
Całkowicie go omijamy, a to w nim mamy header, notification i pozostałe rzeczy.
Z kolei gdybyśmy tutaj zrobili sobie AB.
Jest to dobry pomysł, ale wtedy dostając list of people, jeżeli będziemy
zmieniali te ścieżki, nic nam to nie da.
To znaczy cały czas będziemy widzieć List of People, dlatego że to List of People
jest tutaj zahartowane z perspektywy złożenia tych komponentów, to
te komponenty zależą od siebie.
Zamiast tego chcielibyśmy, żeby to router osadzał stronę w zależności od
tego, na jakiej stronie jesteśmy.
Więc tutaj potrzebujemy komponentu, który nazywa się Outlet i ten outlet jako takie
właśnie gniazdko będzie nam określał, w którym konkretnie
miejscu ma osadzić widok.
Jeśli chodzi o ten outlet na razie nie wyświetla nic, dlatego, że na tej głównej
ścieżce nie ma informacji o tym, jaki element ma się tutaj znaleźć.
Możemy sobie dopisać to w ten sposób, że będziemy mieli na komponencie AB jakieś
dodatkowe elementy, czyli Children.
I to one zostaną ustawione właśnie w outlecie, pod warunkiem, że dostarczymy
tutaj odpowiednią konfigurację.
Czyli na takiej ścieżce, która jest pusta, będziemy chcieli osadzić
element people page.
W ten sposób wracamy do tego samego układu z List of Page.
Ale teraz, gdybyśmy chcieli sobie dopisać Exchange, jesteśmy w stanie to zrobić.
To znaczy tutaj znowu na głównej ścieżce chcielibyśmy appeal, ale jeżeli dalsza
część ścieżki to Exchange, zobacz to tutaj.
Będziemy chcieli sobie nie listow page zamontować.
Moglibyśmy tutaj sobie czysto teoretycznie zrobić właśnie nasz
page layout razem z tytułem Exchange.
Musimy to zamknąć.
I teraz zobacz dostajemy stronę Exchange.
Jeśli jesteśmy na Exchange i stronę People.
Jeśli wracamy tutaj List of People, powinniśmy teraz dodać osobny komponent
właśnie jako exchange page, tak żebyśmy szli właśnie według tej konwencji, że
tutaj będziemy mieli główne strony, główne widoki naszej aplikacji.
Przenieśmy sobie w takim wypadku ten page layout.
Przeniesiemy go do osobnej strony.
Tutaj utwórzmy sobie stronę nazwaną Exchange Page.
I ten JSX będzie nam eksportował nowy komponent Exchange Page.
Razem z tym kodem, który mamy tutaj.
W takim układzie mamy People page.
No i na routingu Exchange będziemy mieli Exchange page.
I tutaj zwracamy ten kod, który przygotowaliśmy.
Exchange of Gifts, załóżmy.
To tutaj moglibyśmy przygotować dalszą część strony, czyli tutaj.
Exchange of Gifts.
Mamy tą stronę Exchange.
A tutaj jak przeniesiemy się na People.
Mamy list of people.
Więc tak jak widzisz ten page layout znowu zostaje wykorzystywany per Każda strona,
którą tutaj mamy i to pages będzie obsługiwane właśnie w głównej mierze przez
router, bo to router będzie osadzał strony.
Nie potrzebujemy tego importu z Page Layout.
Zauważ, że potrzebujemy tutaj, aby JSX jako nasz główny element, a później te
komponenty, które mamy w Children będą osadzane właśnie poprzez Outlet.
Dlatego ten outlet jest tutaj nam potrzebny i to on będzie determinował,
jaki komponent ma się osadzić na jakiej ścieżce.
To co widzisz tutaj w RouterJS mamy główną ścieżkę i na głównej ścieżce, czyli na
każdej ścieżce tak naprawdę będzie osadzony komponent app, a później dalej
będzie sprawdzana ścieżka czy albo jest to puste.
Więc generalnie jeśli jest puste to mamy PeoplePage i to zostanie
ustawione w outlecie.
Natomiast jeżeli będziemy mieli exchange, czyli ten segment ścieżki, to
będzie dodatkowo tutaj Exchange.
To wtedy mamy osadzony komponent Exchange Page i w ten sposób już zaczyna nam to
bardzo fajnie funkcjonować, dlatego że za każdym razem, jeżeli sobie klikniemy w
People, będziemy w Top People, jeśli będzie Exchange, to Exchange.
Więc działa nasze menu i co więcej to jest obsługiwane cały czas
lokalnie, czyli client side.
Cały czas mamy właśnie Create browser router, więc to jest client side routing.