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.
Nasz formularz jest w tym momencie dość prosty.
Mamy tylko name'a, którego możemy sobie tutaj uzupełnić i możemy wysłać.
Jednak już na tym etapie.
Gdybyśmy chcieli na przykład zrobić walidację, moglibyśmy
natrafić na pewne problemy.
Gdyby tych pól było więcej, gdyby formularz był bardziej rozwinięty,
gdybyśmy sobie wyobrażali sytuacje, w których nie tylko do naszych osób mamy
imiona, ale na przykład dopisujemy adresy mailowe, czyli idziemy poziom wyżej z tą
aplikacją i rozsyłamy maile, że ma miejsce nowa impreza Exchange of Gifts.
No i wtedy każda z tych osób ma swój adres mailowy.
No to tutaj musielibyśmy mieć kolejne pole do walidowania i zaczynałyby
się robić schody.
Oczywiście moglibyśmy to rozegrać JustState'em i takim controlformem i każdy
z tych elementów moglibyśmy w ten sposób przedstawić jako pewien zakres
stanu, który aktualizowalibyśmy.
Natomiast chcę pokazać Ci bibliotekę Formik.
Ta biblioteka służy do obsługi formularzy i pozwoli nam bardzo łatwo nie tylko na
to, żebyśmy nie musieli już pisać np.
Event Submit, ale również będziemy mogli sobie później w następnej
lekcji walidować formularz.
Zobaczymy sobie, jak to zrobić.
Zobaczmy więc ten komponent.
Formik ten komponent.
Gdybyśmy sobie zainstalowali bibliotekę formik, dostajemy go i on ma dość dziwną
składnię, dlatego, że tutaj jako child przyjmuje tylko jeden element i
tym jednym elementem jest function.
Tak jak widzisz tutaj mamy tutaj wzorzec function as childComponent, czyli jak
gdyby twórca biblioteki stosuje taki zapis.
Ten zapis w niczym nam nie przeszkadza.
Chcę tylko, żebyś był zaznajomiony, że może się coś takiego pojawić.
Możesz coś takiego spotkać w innych bibliotekach również, natomiast tutaj
generalnie dostajemy wszystkie propsy, które potrzebujemy, żeby ustawić do
naszego formularza i nasz formularz musi być po prostu czymś takim opakowany, takim
właśnie komponentem Formik razem z tym function child.
I dopiero tutaj będzie nasz JSX, który mamy do tej pory, ale wtedy jeśli
prześlemy handleSubmit handleChange Blur.
No i tutaj musimy spełnić warunek, że ten input musi mieć name.
No to wtedy jak gdyby Dostaniemy chociażby informacje na temat ewentualnych błędów.
Jeśli wczepimy walidację i będziemy mogli zobaczyć sobie jak to funkcjonuje i jakie
podaje nam dodatkowe informacje na temat tego formularza.
Zainstalujmy Bibliotekę form i zobaczmy jak to użyć dla naszego formularza.
Na początku uruchamiam terminal i npm install form i muszę odświeżyć swój page.
I to tutaj opakujemy to właśnie tym komponentem For me.
Mamy tutaj initial values i onSubmit onSubmit.
Chcielibyśmy, żeby to było to nasze handle submit, czyli tutaj możemy to przesunąć.
Natomiast formik sam z siebie będzie miał właśnie tą function asChild.
Wygląda to tak, że mamy tutaj po prostu nawiasy cząsteczkowe i
dostajemy tutaj funkcję.
Możemy rozpisać to sobie jako props albo form props i tutaj będziemy mieli JSX.
Więc to jest całe to nasze opakowanie od form.
Spróbujmy sobie to przesunąć dokładnie w to miejsce.
I tutaj mamy insza walutę.
Może być jakimś pustym obiektem na ten moment.
I teraz mamy formprops.
I tutaj musimy mieć handle submit.
Podobnie jak mamy tutaj.
Czyli zauważ, że będziemy wprowadzać coś takiego.
Teraz onChange będzie wyglądało inaczej, bo mamy tutaj props handle change,
więc nie przejmujemy się tym sami.
Nie potrzebujemy teraz tego state'u.
Zamiast tego będziemy mieli coś, co będzie symbolizowało nasz initial values.
Tutaj możemy sobie przesunąć po prostu to personname i określić to jako puste.
Pamiętajmy o tym, że to personname musi być w najmie, czyli tutaj
name musimy mieć personname.
Mamy placeholder i potrzebujemy jeszcze value i onBlue.
W naszym przypadku zauważ, że value będzie wyglądało trochę inaczej dlatego, że mamy
props, a dokładnie form props, change, form props, handler, blur i form props.
Dokładnie to będzie values i personname, w tym przypadku personname.
Zaczynamy od pustej wartości.
Tutaj nie będziemy mieli w submit tego personname.
Zamiast tego zauważ, że dostajemy wsubmit values i actions.
I do tego będziemy chcieli się odwoływać.
Czyli mamy tutaj values i actions.
No i spróbujmy sobie na dobry początek to nasze values przedstawić jako consolelog.
I tutaj w Actions będziemy mieli coś takiego jak chociażby reset form.
Teraz tutaj nie mamy informacji na temat tego personname, ale zamiast tego możemy
dostać informację z form props od form IKEA.
Isvalid.
I jeżeli formularz jest zwalidowany, to wtedy podświetla nam się to.
Ponieważ jeszcze nie mamy żadnej walidacji to będzie się świeciło na Opacity 1.
Natomiast jeśli tutaj wpiszemy np. Hello!
Spróbujemy coś dodać, to widzimy, że to powinno dalej działać.
I ta nasza logika addPerson teraz będzie wyglądała troszeczkę inaczej, dlatego, że
pod F12 w konsoli dostaniemy object, który będzie miał personname Hello.
To jest dlatego, że to values zbiera nam jak gdyby cały obiekt, prawda?
Więc teraz powinniśmy sobie to wyłuskać jako value z personname.
Więc Person będzie teraz jako values person name.
Teraz musimy przez chwilę uważać dlatego, że nie walidujemy tego formularza, więc
możemy tutaj wrzucić nawet pustą wartość.
Natomiast jeżeli dopiszemy coś.
I wrzucimy tutaj w People, widzimy, że jest Monika, jest Edmund i John.
I możemy wystartować.
Więc wszystko działa tak, jak do tej pory.
Na razie niewiele się zmieniło.
Widzimy tylko, że zachowaliśmy trochę boilerplate, jeśli chodzi o to,
co było tutaj wcześniej napisane.
Musieliśmy pokombinować z submit i tym, co jest w środku.
Musieliśmy pokombinować z use state.
Natomiast wyobraź sobie, że tych pól byłoby więcej np.
10 15, to wtedy formularz robi się już bardzo skomplikowany.
Wtedy musielibyśmy kombinować.
I jako use state prawdopodobnie użyć obiektu.
Ten obiekt musiałby być kopiowany za każdym razem, gdybyśmy
go sobie updateowali.
No nie wyglądałoby to zbyt szczęśliwie.
A dodatkowo jeszcze zależy nam tutaj na walidacji, którą za chwilę Ci pokażę.