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.
Już za chwilę przygotujesz swój pierwszy komponent.
Wrzucimy go sobie tutaj do src.
Utworzymy specjalny katalog np.
Components i to tutaj będziemy składać nasze widoki.
Załóżmy, że pierwszy komponent, który utworzymy to będzie header, więc tutaj
możemy sobie przygotować nowy plik jako header JSx.
Dlaczego w ten sposób?
Ponieważ header JSx będzie naszym komponentem.
Musimy zacząć z dużej litery.
Z drugiej strony będziemy w środku używać JSXa, więc potrzebujemy tego rozszerzenia.
I teraz jeżeli zrobimy sobie eksport funkcji, możemy zrobić to jako name
export, nazwać ją sobie po prostu header.
I tutaj możemy zwrócić coś co będzie JSX np.
Jakiś section.
Zauważysz, że w filmie będzie się to nazywało Hero.
Natomiast my potrzebujemy wyświetlić jakiegoś H1 np.
Z napisem hello tylko po to, żeby zobaczyć czy ten header faktycznie nam działa.
Żeby to sobie sprawdzić musimy uruchomić ten projekt.
To co widzisz tutaj na porcie 5100 to mój prototyp.
Mam go tylko u siebie, lokalnie, po to, żeby pokazać Ci jak będzie to mniej więcej
wyglądało, bo my nie mamy jeszcze doinstalowanej do projektu.
No i tak naprawdę nie wiemy jak pracować sobie z tym projektem,
jak go sobie uruchomić.
Przypominam Ci, że tutaj w packagedo JSON mamy prawdę na ten temat.
Tutaj w skryptach widzimy, że mamy skrypt do budowania, który użyliśmy wcześniej,
ale mamy też ten skrypt dev, który pozwoli nam uruchomić naszą aplikację.
Najprostszym sposobem na uruchomienie tego skryptu wcale nie jest uruchamianie
go bezpośrednio z terminala.
Moglibyśmy otworzyć terminal, wpisać npm run dev i to wszystko powinno
nam elegancko działać na porcie.
5.1. 7.3. Jeśli teraz klikniesz sobie w ten link, to zobaczysz, że otworzy Ci się
właśnie na porcie 5.173 VID plus React, czyli ten nasz podstawowy układ,
który był dla nas wygenerowany.
Natomiast bardzo ciekawie jest zapamiętać sobie jedną rzecz.
Jeżeli zamkniemy to zadanie, czyli klikniemy sobie Ctrl+C to wtedy powinien
przestać nam działać nasz serwer i jak gdyby Ctrl+C pozwala nam tutaj
wyjść z tego nieskończonego taska.
Natomiast tutaj możemy kliknąć sobie właśnie w ten sposób
uruchomienie run script.
I to run dev wrzuci nam się tutaj jako konfiguracja w webstormie czy IntelliJ u.
I w ten sposób będziemy mogli sobie bardzo szybko uruchamiać to właśnie
z poziomu tej konfiguracji.
Czyli zobacz tutaj możemy sobie to zatrzymać albo uruchomić ponownie i
będziemy mieli ten serwer deweloperski.
Ewentualnie możemy też kliknąć prawym na pakiet Get JSON Show npm Scripts i tutaj
mieć dostęp do wszystkich tych skryptów i double clickiem uruchamiać ten skrypt,
Ponieważ uruchamia się to jako task, jako nasza konfiguracja, to w momencie, gdy
będziemy chcieli użyć tego jeszcze raz, będziemy mieli informację, że dev is
running, czyli ten task już jest uruchomiony i nie potrzebujemy
uruchamiać go ponownie.
Mamy tutaj stoper Run Run, czyli zatrzymujemy tego taska,
ubijamy ten serwer.
No i jeszcze raz uruchamiamy ponownie. Albo cancel.
Czyli generalnie mamy tutaj jakieś informacje, że już serwer jest
wystawiony na porcie 5173.
Bardzo podobnie będzie się to zachowywało w przypadku naszego Visual
Studio Code, Visual Studio Code.
Powinieneś mieć coś takiego jak npm Scripts.
Jeśli tego nie widzisz, to po instalacji i otwarciu tego projektu tak żeby widzieć
ten node modules czyli secret gifts otwarte jako folder.
File open folder.
Zauważ, że jeśli nie ma tego panelu npm scripts, możesz spróbować go sobie włączyć
tutaj View OpenView i po prostu napisać NPM.
I wtedy pojawi nam się npm Scripts.
I w ten sposób tak samo będzie można uruchamiać właśnie serwer deweloperski.
Dzięki temu, że możemy to w ten sposób uruchomić, będziemy bardzo łatwo mogli
uruchomić sobie czy to build, czy dev i właśnie działać na poziomie tych
tutaj tasków, tych konfiguracji.
My nie potrzebujemy całego tego boilerciku, który został
dla nas przygotowany.
Chcielibyśmy się go pozbyć, żeby zobaczyć nasz header.
Jak to zrobić?
Cóż, spróbujmy tu troszeczkę wyczyścić to, co się dzieje w main JSX.
Przede wszystkim widzimy to czarne tło i wszystko dlatego, że mamy tutaj wpięty
indeks CSS, Czyli są tu jakieś już zdefiniowane style.
Gdybyśmy go sobie otworzyli, zobaczymy, że jest Fonfamily, ustalone
są ustalone pewne elementy.
Możesz sobie krok po kroku próbować zakomentowywać te importy
albo je wręcz wyrzucać.
Wtedy zobaczysz, że coś nam się zmienia na stronie.
Bardzo podobnie będzie przy JSX.
App JSX ma swój app CSS.
Gdybyśmy weszli do tego AppJS, możesz to zrobić z kontrolerem i przechodzić sobie
po tych komponentach, ponieważ działają one jak po prostu zwykłe
pliki zaimportowane.
To tutaj ten import app CSS też możemy sobie go pożegnać i wtedy zobaczymy, że
mamy czyściuteńką stronę bez żadnych styli.
Tutaj moglibyśmy użyć naszego komponentu.
Żeby to zrobić musimy zaimportować sobie ten nasz komponent.
Na razie zrezygnujemy z tych wszystkich elementów, które importowane
są tutaj i tutaj w środku.
App dorzucimy sobie właśnie ten nasz header.
Pamiętaj, że ten header musi być pisany z dużej litery.
Potrzebujemy również ten import z components header JSx i
mamy tutaj swoje Hello!
Teraz warto by sobie to poprawić, tak aby tutaj mieć faktycznie tytuł naszej
aplikacji, czyli tutaj w tym będziemy zrobimy sobie tytuł i
podtytuł tej naszej aplikacji.
Możemy tutaj zapisać sobie właśnie Secret Gift Giver Jak doinstalować bulmę, czyli
jak możemy po prostu dorzucić sobie jakąś bibliotekę do tej naszej kolekcji.
Zwróć uwagę, że w packagejson będziemy mieli dev dependencies i dependencies i to
właśnie tutaj w dependencies chcemy sobie dorzucić bulmę jako nasz framework, jako
coś, co będziemy chcieli sobie zaimportować.
To będzie tak proste jak zaimportowanie chociażby tego index CSS,
który był tutaj w tym miejscu.
Czyli będziemy mogli sobie w ten sam sposób zaimportować wszystkie style z
Bulma, tak aby użyć tego frameworka.
Header JS jest już gotowy i to nasz pierwszy komponent.
Zauważ, że jest to po prostu funkcja, która jest wyeksportowana.
Natomiast ponieważ jest to name export, to tutaj zaimportujemy to sobie w ten sposób.
Czyli w appjsx mamy header i wrzucamy sobie to tak moglibyśmy multiplikować ten
header, czyli zrobić go sobie kilka razy i będziemy mieli tutaj wyszczególnione go
tyle razy, ile do niego się odniesiemy na tym widoku.
Natomiast sam Up będzie naszym głównym komponentem, więc nie będziemy
musieli wychodzić poza to. AB.
Nie będziemy musieli wracać do main.
JSX Main.
JSX Wracamy tylko w momencie, gdy chcemy do konfigurować coś do naszej aplikacji.
Zobacz jest tu zrobiony React Strict Mode, który otacza to nasze Up, czyli ten nasz
root komponent, ten główny komponent.
Później wyjaśnię Ci na czym ten mod polega.
Natomiast tutaj chcemy sobie doinstalować teraz bulmę.
Zróbmy to z terminala npm install bulma.
To powinno nam zmienić następujące zapisy w package JSON.
Tam w dependencies powinno dojść bulma.
U mnie jest to wersja 1.01, u Ciebie może być to jakaś inna wyższa wersja.
Natomiast tutaj żeby zaimportować sobie bulb do naszego projektu potrzebujemy
przeedytować to main jsX i zrobić import Bulma CSS i bulma CSS.
Dzięki temu zobacz, że wszystko nam się tutaj troszeczkę zmienia, dlatego,
że Bulma osadziła nam się na stronie.
Widzimy tutaj Secret Giftgiver.
Możemy sobie teraz zacząć korzystać z elementów bulmy, czyli
tutaj w dokumentacji.
Spróbujmy sobie odnaleźć tutaj w tych elementach i layoucie
coś takiego jak hero.
I to będzie właśnie coś, co ja użyłem tutaj.
Czyli mamy section hero.
Hero is info.
Zobacz, że pożyczam sobie ten kod i teraz będę go próbował wkleić do mojego JSXa.
Ale problem, który tutaj napotkałem to fakt, że mamy tutaj wyszczególnione to
jako class class class, a nie ClassName.
Jednak ID takie jak właśnie IntelliJ czy Web Store jest na tyle sprytne, że w
momencie, w którym będę próbował to sobie wkleić tutaj, czyli zobaczmy to nasze
Secret Gift Weaver, czyli ten nasz skopiowany kod, chcę sobie tutaj wkleić i
podmienić ten tytuł właśnie na Secret Weaver.
Od razu zmieniają mi się klasy na Classname, NaClassName,
żeby mieć ten efekt. Visual Studio Code.
Polecam Ci wtyczkę.
To powinny być wtyczki typu załóżmy class tuClassName.
Zobacz coś takiego.
Mamy tutaj wtyczkę, która pozwala nam właśnie na taki sam feeling.
W momencie, w którym wklejasz coś do JSX z klasą równa się.
Zmieni nam się to na clasname, czyli już tak jak powinniśmy dokładnie używać w JSX.
Zobacz, że teraz zaczyna to przypominać ten nasz prototyp.
Tutaj mamy jeszcze podtytuł, który możemy sobie użyć i wkleić tutaj.
Natomiast generalnie wygląda to obiecująco.
Mamy swój pierwszy komponent, który jest osadzony na JSX.
Dokładnie jest to w komponencie app.
Mamy tutaj nasze header, natomiast jeszcze zmiana w JSX to jest zaimportowanie bulmy.
Pamiętaj, że bulma musi być doinstalowana do projektu.
Czyli generalnie żeby to wyglądało tak fajnie warto sobie w
Dependencies dorzucić bulmę.
Zrobiliśmy to podsumowując w npm install bulma.
Wtedy dodaje nam się bulma do projektu i możemy działać dalej.