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.
Jeśli chodzi o osadzenie debuggera.
W przypadku Visual Studio Code, to obowiązuje tu podobna reguła, jaką
mieliśmy w przypadku osadzenia dowolnego debuggera.
Czyli zauważ, że tutaj na localhost 5.173, jeśli chcemy osadzić debugger dla
frontendu, musi działać po prostu nasz serwer deweloperski, więc
muszę go sobie uruchomić.
Jeśli serwer działa i jest to potwierdzone.
Możemy sobie zostawić ten taki stan gdzie mamy network error.
Spróbujemy sobie właśnie to debugować, czyli tutaj powodem naszego debugowania
będzie co się tam dzieje i zobaczmy sobie to nasze people page.
Mamy tutaj error, więc spróbujmy sobie postawić breakpoint chociażby w tym
miejscu i zróbmy sobie takie zadanie, w którym to network error
będziemy sobie modyfikować.
Czyli chcemy sobie przeedytować ten zapis tutaj na jakiś inny.
Postawienie samo breakpoint oczywiście.
No naiwne podejście, nie mamy czegoś takiego.
To nie będzie działać.
Out of the box jak to się mówi.
Jeśli chodzi o Visual Studio Code, to tutaj dawniej było tak, że mieliśmy
extension i ten extension był odpowiedzialny po prostu za debugger.
Teraz od jakiegoś czasu już nie musimy w ogóle instalować dodatkowych extensions.
Po prostu tutaj mamy specjalny panel.
Rundebug.
I teraz możemy sobie tutaj kliknąć na Run and Debug i przygotujmy sobie nie NodeJS,
bo nie jest nam potrzebny, tylko mamy Web app, na przykład Chrome.
I teraz tutaj na tym Chromie jesteśmy w stanie się połączyć.
Ale oczywiście musimy zdefiniować odpowiedni port i to będzie w naszym
przypadku localhost 5.173. Czyli zobacz ta sama zasada jak w przypadku
narzędzi JetBrains.
Musimy mieć po prostu do czego się podczepić.
No i definiować w którym miejscu w takim układzie, jeśli teraz uruchomimy to tutaj
w Start Debugging powinniśmy znowu zobaczyć nową przeglądarkę.
Ta przeglądarka powinna się otworzyć i nasz breakpoint powinien zadziałać.
Czyli zobacz, znajdujemy się dokładnie w tym miejscu, w którym mamy problem,
dlatego, że została wywołana ta funkcja get people.
Ta metoda z naszego People service.
I teraz jakby złapaliśmy sobie tutaj błąd.
Mamy bardzo podobny look and field, czyli tutaj wszystkie elementy są bardzo
podobne, to znaczy mamy play, mamy tutaj step over.
Step, step out.
I możemy sobie albo zrestartować, albo zatrzymać cały proces debuggingu.
Zwróć uwagę, że mamy tutaj wylistowane break pointy.
Możemy je sobie też mutować.
Jeśli chcielibyśmy to zrobić, to wystarczy sobie to odczepić tutaj i wtedy, jak gdyby
ten breakpoint nie będzie miał miejsca w momencie, gdy ja na przykład
odświeżę tą aplikację. No nie?
Czyli tutaj po odświeżaniu powinien mi się debugger zatrzymać, ten breakpoint.
Ale jak widzisz on jest taki wyszarzony dlatego, że jest nieaktywny.
Mogę go sobie aktywować i jeszcze raz odświeżyć aplikację.
Ładujemy wszystko od początku.
Moglibyśmy też tutaj skorzystać z routingu.
Gdybyśmy skorzystali z routingu, też mielibyśmy taką właśnie zależność, że
uruchomilibyśmy ponownie People Page i wtedy trafilibyśmy w ten user effect.
Spróbujmy sobie to zmodyfikować.
Widzimy, że to jest access error.
Ten error ma jakiś message i ja mogę zrobić sobie tutaj setValue i to
setValue podmienić sobie na coś innego.
Na przykład Cannot find server.
I teraz spróbujmy sobie to puścić dalej.
Tutaj zauważ mamy ten sam problem, czyli jakby drugi raz wywołuje nam się ten
people page i to tutaj powinienem sobie edytować.
Za drugim razem powinienem zrobić set value.
Tu jest coś o czym mówiłem w lekcji poprzedniej, czyli polecam Ci sprawdzić.
Poza tym, że rozmawialiśmy tam o debugerze w Webstormie, jest tam również wyjaśniony
ten street mode, który powoduje, że dwa razy nam się uruchamia nasz
komponent i dlaczego tak się dzieje?
I tutaj weźmy sobie w configu wrzućmy coś takiego jak message cannot find server.
Ok.
I dopiero tutaj to powinno nam zadziałać poprawnie.
Czyli podmieniliśmy ten message, który jest tutaj w Set error message.
Później został on ustalony i w ten sposób możemy sobie działać w
aplikacji, stawiać breakpoint.
Tutaj jest to samo menu, o którym wspominałem w lekcji
poprzedniej, to znaczy watch.
Gdybyśmy tutaj dodali sobie na przykład data, to jeżeli data będzie występowało w
danym sklepie, to będziemy mieli informację na ten temat.
Spróbujmy sobie zrobić dwa breakpoint tutaj i tutaj.
W momencie gdy teraz przejdę sobie do Exchange, wrócę na People.
No to mamy znowu loading I teraz dostajemy tutaj zauważ error.
Ale ponieważ jak gdyby ten error zostaje wywołany tutaj w miejscu,
w którym mamy breakpoint.
Nie mamy dostępu jeszcze do tego data.
Czyli ten breakpoint nigdy nam się nie aktywuje.
To jak gdyby nie widzimy co jest pod tym data.
Możemy sobie to zmienić delikatnie jeszcze raz uruchomić tą aplikację, czyli tutaj
weźmy sobie play i na przykład odświeżymy sobie tą stronę.
Widzimy, że nie mamy jeszcze dostępu do data.
W momencie, w którym jest ten breakpoint to dlatego, że nasz await jeszcze nie
zwrócił nam danych, więc nie mamy jeszcze do tego dostępu.
Spróbujmy sobie w takim wypadku uruchomić serwer, żeby on zadziałał poprawnie.
Czyli w momencie, gdy teraz postawimy backend zobacz, aplikacja jest zatrzymana,
to powinniśmy spodziewać się innych rezultatów.
Dlatego, że w tym momencie, jeszcze przed wykonaniem tego Geta
zatrzymaliśmy aplikację.
Teraz jeżeli klikniemy dalej to zobaczymy, że jest to drugie wywołanie.
I tutaj po odświeżeniu spróbujmy sobie podejrzeć to date jeszcze raz.
Muszę poprawić breakpoint, czyli tutaj odświeżmy sobie, zobacz, że w łaczu mamy
właśnie data i to data moglibyśmy sobie podmienić tylko za drugim wywołaniem,
czyli mamy drugie wywołanie.
I teraz jeżeli cokolwiek tutaj zmienimy, na przykład to ID setValue tutaj możemy
sobie zmienić chociażby na trzy, a tutaj zmienimy sobie set value
datę i możemy puścić aplikację dalej.
Zobaczmy, że tu jest Create.
No i teraz możemy sobie podejrzeć narzędziami deweloperskimi.
Tylko zwróć uwagę na jedną rzecz.
Tutaj mamy kompletnie nową instancję naszej przeglądarki, więc nie mamy dostępu
do naszych narzędzi deweloperskich.
Jeżeli chcesz, musisz sobie tutaj osobno zainstalować te narzędzia deweloperskie,
ponieważ tutaj ich nie instalowaliśmy.
Instalowałem je po prostu w tej instancji przeglądarki, którą mam tutaj.
Czyli taka bazowa, z której korzystam na co dzień.
Tutaj mam React DevTools.
Tutaj musiałbym sobie je doinstalować.
Ale co fajniejsze tutaj download the React dev tools for a better
developer experience.
Mamy tu przed nosem cały czas w trakcie tworzenia tej aplikacji i na pewno już w
konsoli zauważyłeś tą właśnie informację.
Więc warto sobie to kliknąć, zrobić install for Chrome i tutaj mieć też dostęp
do tych narzędzi deweloperskich w trakcie gdy tutaj właśnie rozwijamy
sobie tą aplikację.
Zobaczmy sobie Add to Chrome.
Dodaj rozszerzenie i będziemy w stanie teraz zobaczyć sobie chociażby tego
ID, którego podmieniliśmy sobie.
Choć niestety musimy sobie odświeżyć stronę, żeby narzędzia
deweloperskie nam zadziałały.
Tutaj Deptule z Reacta React Developer Tools.
Możemy sobie tu przyczepić do tego narzędzia debug i podejrzeć sobie.
W momencie gdy sobie edytujemy coś.
Kliknijmy sobie play.
Teraz powinniśmy mieć do nich dostęp i gdybyśmy cokolwiek modyfikowali
debuggerem jesteśmy w stanie sobie to sprawdzić.
Zauważ, że debugger daje nam o tyle elastyczność, że tutaj faktycznie
modyfikujemy sobie stan danych i możemy sobie modyfikować propsy.
Natomiast jeśli chodzi o debugger mamy znacznie szersze możliwości, bo nie tylko
stan i propsy możemy sobie modyfikować.
Możemy sobie modyfikować dowolne wartości i wykonywać w trakcie
działania aplikacji kod.
Przede wszystkim ją zatrzymywać w odpowiednim momencie i analizować.
Więc tutaj jak gdyby developer experience, jeśli chodzi o obydwa te edytory kodu,
zarówno Visual Studio Code, jak i Web Store będą bardzo, bardzo podobne.
Czyli generalnie mamy tutaj developer experience, który nam się powtarza, bo
mamy bardzo, bardzo podobne narzędzia, za pomocą których możemy debugować aplikację.