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 ma jeszcze jeden problem, o którym komunikowałem Ci wcześniej.
To jest ten baseURL.
Otóż chodzi o to, że aktualnie ładujemy tą listę użytkowników.
Czyli people jest załadowany dlatego, że mamy tutaj na porcie 3000 ustawiony
lokalny serwer, który imituje nam mokuje nam backend, prawda?
Czyli mamy na porcie 3000 to wystawione.
I teraz wyobraź sobie, że ktoś odwiedza naszą stronę.
Czyli to już nie jest na localhost ie 5.173, tylko jest na
przykład na naszym AP.
Czyli jest jakaś domena, która pozwala nam na to, żeby ktoś odwiedził naszą stronę.
Czyli nie działamy już na lokalnym serwerze deweloperskim, tylko
puściliśmy to na produkcję.
W takim układzie ta produkcja w momencie gdy ktoś wejdzie na tą stronę też będzie
próbowała uderzyć do localhost 3000, czyli też będzie próbowała dokładnie wykonać to
zapytanie, dlatego, że ten kodzik tutaj mamy to za hardkodowane, więc jest to
zapisane tutaj nie jesteśmy w stanie na to wpłynąć, więc innymi słowy nie będzie to
dostępne dlatego, że nasz użytkownik końcowy nie będzie miał na porcie 3000
wystawione tego naszego mokowego serwera do API.
Jak sobie z tym poradzić?
Bo z drugiej strony chcielibyśmy z tego korzystać.
Przecież nie chcemy na przykład korzystać z produkcyjnego API.
Teraz tylko chcielibyśmy w momencie, gdy robimy development, właśnie
skorzystać z tego localhost 3000.
To jest bardzo wygodne.
To jest wygodne dla nas, dlatego, że po pierwsze, możemy sobie sprawdzić, czy to
ad personam nam działa, po drugie możemy sobie zalosować zupełnie inne imiona.
Tutaj możemy sobie potestować, sprawdzić, pobawić się właśnie tym mokowym backendem.
Jak to sobie zrobić?
Okazuje się, że istnieją pliki, które konfigurujemy sobie w Vicie, które
pozwalają nam właśnie na zrobienie czegoś takiego.
Jeżeli tutaj zobaczymy sobie Gajda, to masz tutaj coś takiego jak
en variables i en variables.
To są właśnie te elementy, które za pomocą plików dodinV jesteśmy w stanie sobie
wymyślić, bo to jest Twoja nazwa.
Sam możesz stwierdzić jak to się nazywa.
Jedyny warunek, jaki widz przed Tobą stawia to to, że musi być to
poprzedzone takim prefiksem vid, żeby.
Jeżeli tego nie zrobisz, to nie będziesz w stanie korzystać z tych zmiennych
środowiskowych, Więc spróbujmy sobie je wprowadzić.
Wszystko czego potrzebujemy to plik dod i enV.
Spróbujmy go sobie zrobić tutaj.
Na szczycie naszej aplikacji będziemy mieli File jako DodinV.
I tutaj spróbujmy sobie zrobić właśnie ten prefix wid backend URL.
I teraz domyślna wartość tego bitbucket URL to będzie po prostu localhost
3000, czyli coś takiego jak mamy tutaj.
To może być w ten sposób.
Zróbmy to sobie tak.
I żeby użyć tej wartości musimy teraz posłużyć się tym import metainv.
Czyli robimy to na tej zasadzie Importmeta i EnV i tutaj pakiet URL.
Jeżeli teraz zobaczylibyśmy sobie, czy wszystko nam działa, okaże się, że tak.
Możemy nie być do końca przekonani, ponieważ niektóre takie serwery
developerskie wymagają restartu w momencie, gdy zmieniasz plik dodinv.
Jednak w przypadku tutaj Vita jest tak, że nawet jeżeli zmieniasz jakieś zmienne
środowiskowe, czyli nawet jeżeli tutaj zmienię sobie na 31, to dostaję network
error, dlatego, że gdybym sobie to zbadał, okaże się, że dokładnie w tym momencie.
Spróbujmy to odświeżyć jeszcze raz, żeby to zobaczyć.
People, które tutaj mamy, widzimy, że jest na 31.
Czyli jak gdyby ta moja zmiana zadziałała natychmiastowo, więc nie musimy
restartować nawet serwera.
Możemy sobie to poprawić na 3000.
I teraz wszystko ładuje się poprawnie.
I jak to się ma do tego dynamicznego podmieniania?
No bo teraz tak naprawdę jesteśmy w tym samym punkcie.
Jedyna różnica jest taka, że zahardkodowany mamy tutaj
localhost 3000 w DNV.
Okazuje się, że mamy tak zwane mody i te mody, takie jak na przykład Production
pozwalają nam dopisywać dodinv, co oznacza, że w momencie gdy będziemy mieli
DoD i MV jako production zobacz, dopiszemy sobie.
Możemy skopiować ten plik i tutaj do MV production, to wtedy możemy
zmienić ten backend URL.
Czyli te pliki do DNV powinny mieć te same wpisy, ale różne wartości.
Czyli TNV ma wpis vid backend URL, ale ten DNVproduction będzie miał np.
Wpis https już mój backend with people. com.
Być może jest strona people.
com, więc ten pomysł nie jest zbyt szczęśliwy, ale możemy to tak zostawić.
Możemy sobie też tutaj wyobrazić, że będziemy mieli tzw.
reverse proxy i ten reverse proxy to będzie na przykład ukośnik API, czyli jak
gdyby po ukośnik API będziemy mieli swój własny backend i tak to
produkcyjnie przypiszemy.
Jak to się ma do naszej produkcji?
Zobaczmy teraz.
Wszystko działa tak, jak byśmy chcieli, czyli jak gdyby nasz wariant
deweloperski działa na localhost 3000.
Na tym nam zależało.
Natomiast gdybyśmy teraz wybudowali sobie wariant produkcyjny, czyli
spróbujmy sobie skorzystać z builda.
Uruchamiam teraz polecenie build jako task.
Zobaczmy, że w momencie gdy przebudujemy sobie produkcję, to wtedy ten wid back end
URL zostanie odnaleziony właśnie tutaj, w naszym liście.
Możemy sobie to wyszukać.
Find in files i zobacz tutaj.
W Dist w tym całym zmumifikowanym kodzie index JS, który jest przygotowany
na produkcję, widzimy ten baseURL. Co to oznacza?
Mówi nam to dwie rzeczy.
Po pierwsze te elementy zostają podmieniane w trakcie budowania, czyli
wszystkie te zmienne środowiskowe mamy w kodzie i mamy w kodzie produkcyjnym.
Ale w kodzie developerskim będziemy mieli te z I V, a w kodzie produkcyjnym
będziemy mieli te z DoD i vdot production.
Więc w tym układzie jeśli wybudujemy sobie tą aplikację to to co mamy tutaj
podmieni się na to co jest tutaj.
Celowo dodam sobie tutaj dwie setki, żeby mieć jakąś nieistniejącą domenę.
Zobaczymy sobie jak będzie się to zachowywało, ponieważ nie załaduje
nam produkcyjnie tych rzeczy.
Możemy jeszcze zrobić sobie taką sztuczkę, że skoro my deweloperską będziemy sobie
wystawiać tą za chwilę na weselu, to będziemy chcieli sobie po jednej i po
drugiej stronie po prostu utrzymać to localhost 3000.
Na razie zostawię to w ten sposób.