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 walidację.
Najpierw spojrzymy na to z wizualnej strony, czyli w bulmie.
Tutaj pod form Ctrl + w General Form mamy taki podgląd i to właśnie będzie input,
który da nam informację is dangerous jako help, czyli ten tekst, który mamy tutaj,
to będzie nasz error i będzie podświetlony tak na czerwono.
Dzięki temu, że zastosujemy klasę is Dangerous w takim wypadku tutaj powinniśmy
dopisać sobie to pole, gdzie będziemy obsługiwać errory i tutaj będziemy
dodawać klasę is danger do inputa.
Wtedy będzie to wyglądało właśnie w ten sposób.
Tutaj oczywiście będziemy mieli odpowiedni message, który będzie
bezpośrednio z walidacji.
Jeśli chodzi o walidację formikato tutaj mamy całą masę sposobów walidowania do
wyboru przede wszystkim form level validation field, level, validation
manual i triggering validation.
Czyli generalnie mamy możliwość uruchamiania tego na różne
sposoby i walidowania formularzy.
My zastosujemy ten pierwszy, czyli level Validation.
Tutaj będzie nam zależało na tym, żeby dostarczyć funkcję validatei.
Ta funkcja validate zwróci nam values i na podstawie tych values
określi czy są błędy czy nie?
Czyli w values będziemy mieli nasze personname.
I utworzymy sobie specjalny obiekt errors.
Jeżeli on pozostanie pusty to dla foremka jest to informacja, że nie mamy błędów.
Jeżeli natomiast coś dopiszemy do tego obiektu, no to oznacza,
że coś jest nie tak.
Możemy to sobie wyobrazić w ten sposób, że mamy funkcję validator i dostajemy values.
I teraz tutaj pożyczymy sobie ten obiekt errors i od razu go zwrócimy.
Teraz sprawdzamy.
Jeżeli values nie ma naszego personname to dodajemy error zgodny z tym polem,
czyli errors personName name is required.
I druga sprawa to chcemy zwalidować.
Jeżeli jest value personname to chcemy zobaczyć jaką ma długość, żeby zobaczyć
czy ta długość to minimum dwa znaki.
I teraz validate możemy przesłać tutaj i zobaczyć jak to będzie działało w
kontekście naszych danych i tego jak chcemy to zwalidować na
konkretnym polu tutaj w Formiq.
Dobrze by było po prostu tutaj użyć form props values personname.
Tylko, że to będą teraz errors dla person name.
I możemy mieć renderowanie warunkowe.
Czyli jeżeli mamy błąd to wtedy chcemy go wyświetlić.
Spróbujmy sobie to odświeżyć.
I teraz Danger jest na stałe przyczepione, dlatego to jest problem.
Zamiast tego powinniśmy użyć ClassName.
Czyli ten className, który tutaj potrzebujemy.
To oczywiście będzie wykorzystanie tej biblioteki z klas name.
I do klas name dodajemy tutaj input.
Natomiast w obiekcie będzie z Danger.
I tutaj Formers Person name będzie determinowało czy mamy jakieś
errory w person name czy nie.
I tutaj jeszcze importujemy sobie className z ClassName.
Teraz odświeżmy to wszystko i zobaczmy, że w momencie, w którym jeszcze nie
odwiedziliśmy formularza to wszystko jest w porządku.
W momencie, w którym go odwiedzimy.
I zrobimy to w ten sposób.
To zobaczmy, że formularz ma błędy.
Czyli wtedy widzimy, że formularz zawiera błędy i podświetla nam się na czerwono.
Zauważmy jeszcze, że w momencie, w którym forma jest pusta, nasze
opacity świeci się na 1.
Tutaj jeszcze poprawmy sobie ten warunek, ponieważ powinno być jeżeli land jest
mniejszy lub równe 2, więc wtedy dopiero będzie to problem.
Więc jeżeli mamy powyżej dwóch znaków, wszystko jest ok.
Natomiast początkowo forma wyświetla się jako valid.
Dlaczego?
Dlatego, że formularz nie zostanie zrealizowany aż do momentu, w
którym nie zostanie dotknięty.
Czyli nie ma tak zwanego dirty state.
W tym przypadku chcemy sprawdzić, czy formprops jest valid i musimy jeszcze z
form props wyciągnąć sobie dirty state.
Czyli w tym momencie, jeżeli coś jest dirty i jednocześnie jest invalid, no to
wtedy jak gdyby chcemy to opacity sobie zmienić.
Więc tutaj poprawiamy sobie to delikatnie.
Ale zobacz, że name is required I name need to be at least two characters long
działa nam poprawnie i to walidowanie funkcjonuje w naszym formularzu.
Teraz możemy sobie zapisać nową osobę.
Zobacz, że jeżeli formularz nie jest poprawnie uzupełniony, to nie wywoła nam
się akcja handle submit, więc nie musimy już tutaj sprawdzać, czy
wszystko jest w porządku.
Robi to za nas formik.
Dodatkowo tutaj mamy tablicę errorów.
Dokładnie jest to obiekt, którym dodajemy sobie, które z naszych pól ma problem.
Ważne jest to, że musimy mieć tutaj nama albo ID zastosowane do inputa.
Jeżeli tego nie będziemy mieć, będziemy mieli problem taki, że nie do końca
wszystko będzie funkcjonowało.
Zasadniczo nic nie będzie nam tutaj działać.
Zobacz, że nie mogę nic uzupełnić w formularzu.
Na szczęście dostaję informację zwrotną od formika, że tutaj nie mamy ID albo name,
więc proszę pamiętaj o tym, że to name musi być teraz obecne.
I w tym momencie mamy pełną walidację formularza.
Wyobraź sobie, jeśli byłoby tu więcej pól, to po prostu musielibyśmy
wrzucić je do insert values.
Gdybym miał jakiekolwiek pamiętać o nich przy walidowaniu i pozostałe tematy mamy
już tak naprawdę gotowe, musielibyśmy jeszcze użyć tych zapisów, ale tutaj z
odpowiednim name dla konkretnego pola.