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.
Zobaczmy, jak to się stało, że w naszej aplikacji React działa.
Przede wszystkim został on zaimportowany tutaj.
Zwróć uwagę na SMS a.
Jest to specjalne źródło, dzięki któremu możemy sobie w nowoczesny
sposób pobrać pakiety RSM.
Polecam Ci do prototypowania, jeśli chcemy sobie coś zobaczyć.
Jak to będzie działać?
Chcemy sobie zaimportować bezpośrednio na stronę HTML.
Możemy to zrobić właśnie w ten sposób.
Tutaj jest przykład z Reactem na wersji 182.0. Moglibyśmy to nawet zapisać.
Tak byłoby jeszcze prościej i wtedy dostalibyśmy tak zwaną wersję Latest,
czyli najnowszą wersję Reacta.
Gdybyśmy to zapisali w ten sposób.
Więc na tym polega sztuczka.
Jak dołączony został React?
Właśnie w tym konkretnym przypadku.
Dodatkowo zauważ, że React potrzebuje coś takiego jak React Dom.
Tutaj mamy Create root.
Zasada działania Create root to jest poleganie na tym, że w momencie, w którym
uruchomimy sobie create root to jest po prostu zwykła funkcja.
Tak jak tutaj widzisz, to przekazujemy sobie node'a, na którym
ma się osadzić React.
I to jest ciekawe, ponieważ nie musi być to konkretnie dokument body.
Gdybyśmy chcieli sobie zobaczyć jak osadzić Reacta i wygenerować sobie tutaj
nowy plik z lekcji 5, to zauważ, że potrzebowalibyśmy sobie tak
naprawdę idąc od początku pożyczyć kilka elementów z tego przykładu.
Tutaj przede wszystkim chcielibyśmy sobie właśnie obsłużyć ScriptType Module.
I to tutaj zaimportować React i React Dom.
Możemy spróbować to zrobić w najnowszej dostępnej wersji.
Wyglądałoby to właśnie w ten sposób i możemy sobie otworzyć ten podgląd, żeby
zobaczyć, jak to będzie funkcjonowało.
Chcę Ci teraz udowodnić, że React niekoniecznie musi być jak gdyby
osadzony na całości naszej strony.
Wręcz przeciwnie, możemy sobie wyobrazić coś takiego, że tutaj będziemy
mieli fragment strony.
Ten fragment strony nie będzie totalnie używał Reacta, natomiast tutaj będziemy
mieli część, w której chcemy faktycznie Reacta Użyć.
Gdybyśmy sobie wyobrazili, że to jest jakiś div z licem root, możemy
mieć do niego odpowiednio dostęp.
Chociażby jeśli sobie zrobimy document getElementById.
I w tym momencie zauważ createRoot, który sobie tutaj zrobimy może osadzić się po
prostu na tym rucie, który mamy tutaj w tym miejscu, a dodatkowo możemy tutaj
zrobić sobie właśnie tą komendę, którą mamy w tym miejscu, czyli render.
I do tego rendera wrzucić test.
Jedyny problem jaki tutaj mamy to to, że oczywiście mamy wyświetlone not using
React here, czyli tutaj widok nam się odświeżył.
Natomiast ten test JSX nie jest tutaj widoczny.
Gdybyśmy chcieli sobie sprawdzić to w przeglądarce okaże się, że mamy problem,
który mieliśmy wcześniej przy osadzeniu JSXa, czyli annexpected token.
Dzieje się tak, ponieważ mamy tutaj do czynienia z JSX i to jest ten problem,
który mieliśmy w lekcji czwartej.
To znaczy tak, to nie zadziała, dlatego, że przeglądarka nie
rozumie JS out of the box.
Żeby to zrobić, potrzebujemy jeszcze jednego narzędzia.
Tym narzędziem jest Babel.
Babel to JavaScript, Compiler i ten JavaScript Compiler pomoże nam w tym,
żeby przeglądarka zrozumiała JSX.
Żeby to jednak zrobić, potrzebujemy mieć tutaj skorzystać z pewnych integration
packages i Babel standalone.
Czyli to jest sposób, w jaki ja dorzuciłem sobie bubble jako standalone do projektu.
Można to zrobić właśnie w ten sposób, czyli pożyczam sobie tutaj ten skrypt z
dokumentacji, wrzucam go tutaj w to miejsce dlatego, że możemy mieć tego Babel
dużo, dużo wcześniej, nawet w Chedzie.
W tym układzie jeśli Babel jest dostępny, to potrzebuję jeszcze zastosować
odpowiednią modyfikację tego skryptu, który był tutaj.
Zobaczmy sobie jak to wyglądało w przykładzie wcześniej, ale chcę Ci
udowodnić, że nie wziąłem sobie tego tutaj z pamięci, tylko z dokumentacji.
W takim układzie, jeśli przejdziemy do dokumentacji tego narzędzia.
Zauważysz, że można sobie tutaj właśnie określić jako typ bubble
i odpowiedni preset.
Czyli będziemy chcieli mieć script text bubbles i DataType moduł
w tym przykładzie 5.
Używamy więc TypeText, Bubbles i DataType Module.
I jak widzisz elegancko test JSX nam się udał.
W takim wypadku widzimy, że całość tego przykładu działa i w ten sposób
dołączyliśmy sobie React do strony.
Zauważ, że React jest tylko częścią naszej strony.
Mamy tutaj inny element, który kompletnie nie używa Reacta i on działa poprawnie.
Natomiast tutaj poniżej będziemy mieli element, który osadza
właśnie aplikację Reactową.
Docelowo będziemy starać się robić jeden główny komponent, czyli powinniśmy mieć
funkcję na przykład nazwaną App, która będzie takim rootem naszej aplikacji.
Tutaj w tym przypadku będzie to komponent, który zwraca IAM root
i możemy go sobie osadzić właśnie w ten sposób, żeby sobie elegancko
zobaczyć, jak to będzie funkcjonować.
I mamy tutaj I'm root i mamy not using React here.
Gdybyśmy uruchomili to sobie w przeglądarce.
Wtedy mamy dostęp do narzędzi deweloperskich i do inspektora.
Dużo fajniej jest to zrobić, jeśli korzystasz z Visual Studio Code.
Pamiętaj o tym rozszerzeniu LifeServer.
Tam też możesz zrobić taką sztuczkę.
I tutaj mamy I'm root.
Czyli widzimy, że tutaj w id root faktycznie od tego node'a, którego mamy w
domie będzie osadzał się tutaj React i sterował całą tą aplikacją właśnie React.
Cała ta część aplikacji będzie sterowana przez React.
Natomiast nie dotykamy pozostałej części strony.
Możesz sobie w takim układzie bardzo łatwo wyobrazić, że React da się dołączyć do już
istniejącego kodu, do już istniejącej strony.
I jest to prawda.
Natomiast mamy tutaj jeden problem.
Mamy problem z tym standalonem.
To jest nasz słoń w składzie porcelany, ponieważ nie chcemy kompilować
za każdym razem tego widoku.
To, że używamy JSX a pomaga nam, deweloperom.
To pomaga w tym, żebyśmy bardzo szybko, bardzo zwięźle pisali nasze widoki.
Żebyśmy nie musieli używać tej składni, którą kojarzysz z lekcji trzeciej, czyli
tutaj ta solucja numer cztery React Create Element.
Pisanie tego w ten sposób jest troszeczkę bardziej rozwlekłe niż to, co mamy tutaj.
To jak możemy ten sam widok zapisać ze składnią JSX?
JSx pomaga więc nam, ale problem polega na tym, że JSX, który mamy tutaj
powinien kompilować się jednorazowo.
Masz o tym wspomniane w przypadku właśnie tego narzędzia standalone.
Gdybyśmy wrócili do dokumentacji, okaże się, że będziemy mieli tutaj ostrzeżenie,
kiedy nie mamy używać standalone.
I tutaj mamy not use in production, dlatego, że generalnie chcemy, żeby
nasze widoki były prekompilowane.
I tutaj jest sugestia, żeby użyć narzędzi typu webpack, roll up albo parcel, żeby
przekompilować nasz kod head of time, czyli żeby ta kompilacja zachodziła
jednorazowo, a nie za każdym razem, gdy uruchamiamy stronę.
Jest to po prostu niewydajne.
W tym układzie musisz traktować standalone i ten przykład, który mamy tutaj jako albo
jedynie przykłady do nauki, albo jakieś przykłady do prototypowania.
Zauważ, że mamy tutaj kolejny problem, bo chcielibyśmy, żeby ten
komponent był zupełnie osobno.
Chcielibyśmy go sobie zaimportować, jeżeli chcielibyśmy go sobie zaimportować i
skorzystać właśnie z modułów, czyli żeby jeden komponent był na jeden
plik i zrobić sobie osobny plik.
Jest to absolutnie możliwe, dlatego, że mamy tutaj składnię import i możemy sobie
komponent wydzielić do osobnego pliku JS.
Natomiast w momencie gdy korzystasz ze standalone okaże się, że gdybyśmy to
zrobili i zaimportowali właśnie ten komponent jako zewnętrzny plik, mielibyśmy
ten sam problem, że przeglądarka nie rozumie tego znaku mniejszości.
Jakim cudem on się tam pojawia nam w kodzie?
No i wynik jest oczywiście prosty, dlatego, że Babel będzie kompilował, ale
tylko to, co jest tutaj w środku tego oznaczonego text bubble Script
natomiast pominie wszystkie importy.
Do importów już nie wchodzi, więc cały ten setup byłby bardzo, bardzo uciążliwy i
docelowo będziemy chcieli właśnie skorzystać z narzędzi,
które są tutaj wspomniane.
Jest to albo webpack, albo roll up, albo parcel.
Polecam Ci odwiedzić Osom React.
Jest to źródło, które zawiera wszystkie elementy z ekosystemu React, a
na które warto zwrócić uwagę.
Być może nie wszystkie, które istnieją, ale tutaj jest to bardzo fajne źródło
informacji na temat jak na przykład przygotować sobie taką
aplikację Reactową od podstaw.
I tutaj w React Development Tools mamy trzy propozycje Create,
React App, Vid i Parcel.
My skorzystamy z Next Generation Frontend Tooling z Vita, który jest już sprawdzony
na produkcji i on pod spodem tak naprawdę używa roll upa, czyli docelowo jak gdyby
vid narzędzie, z którego będziemy korzystać.
Tutaj zobacz Vidjs dev narzędzie, którego uruchomimy sobie za pomocą jednej
komendy i zeskadujemy cały projekt.
Będziemy mieli cały setup i zrobimy sobie taki projekcik właśnie od podstaw, tak
żeby zobaczyć sobie jak dołączyć Reacta w sposób prawidłowy do projektu.
Co więcej, nie zabiera nam to tej możliwości, którą mamy tutaj, czyli
elastyczność i powoduje, że nawet jeśli skompilujemy to sobie i przerobimy
narzędziem typu roll up na produkcję, to i tak będziemy mieli dostęp do właśnie
takiej sztuczki, żeby dołączyć sobie React w dowolnym miejscu.
Czyli generalnie moglibyśmy przejść z naszym projektem na NodeJS, a tam go
sobie zbudować i tam go dalej rozwijać.
I nawet gdybyśmy mieli projekt, który już zaczęliśmy, moglibyśmy część Reactową
doczepić do tego projektu w którymś miejscu.
Za chwilę wszystko stanie się dla Ciebie jasne.
Za chwilę skalujemy sobie swój pierwszy projekt i zobaczymy, jak poprawnie używać
Reacta robiąc rozwiązanie produkcyjne.