od Podstaw
4 godz. 55 min · ReactJS · Full-stack i Programowanie
Adam RomanskiFrontend developer & YouTube CreatorWszystkie tresci podzielilem na piec rozdzialów, w których bedziemy rozwijac wymyslona przeze mnie aplikacje sluzaca do kolekcjonowania najciekawszych artykulów, notatek oraz kont twitterowych znalezionych w sieci.
Zaczniemy od prostych widoków, na podstawie których wyjasnie Ci, co stoi u podstaw Reacta – dowiesz sie czym jest JSX, oraz poznasz pojecie komponentu funkcyjnego. Dzieki temu oswoisz sie ze skladnia Reacta, która poczatkowo moze wydawac sie nieco obca.
W React niemal wszystko opiera sie o komponenty. Czym one sa? Dowiesz sie tego w drugim rozdziale. Opowiem Ci jak je tworzyc oraz jak tworzyc relacje miedzy nimi. Wyjasnie Ci bardzo szczególowo jak dzialaja propsy oraz w jakich sytuacjach nalezy je wykorzystywac. Zobaczysz tez, jak w Reactcie pracujemy z danymi, jak mozemy je przetwarzac a nastepnie stosujac kilka strategii stylowania komponentów, wszystko wyswietlic w atrakcyjny sposób.
W trzecim rozdziale poznasz sposób konstruowania komponentów klasowych, posiadajacych wlasny stan, dzieki któremu stworzysz miedzy innymi dynamiczny, inteligentny formularz, a takze wiele innych interaktywnych elementów. Dzieki temu szybko zrozumiesz róznice miedzy komponentami funkcyjnymi a klasowymi.
Kiedy juz poczujesz sie dosc pewnie budujac komponenty, dodamy tzw. routing w rozdziale czwartym, który pozwoli nam na stworzenie wielu podstron, które urozmaica nasza aplikacje – dowiesz sie dzieki temu jak integrowac dodatkowe narzedzie w naszym projekcie, oraz jak budowac bardziej skomplikowana strukture aplikacji.
Na sam koniec zostaimy sobie tzw. state managment, czyli zarzadzanie informacjami wspóldzielonymi przez wiele komponentów i podstron. Nie wykorzystamy jednak ani Reduxa ani Mobxa, poniewaz chce Ci pokazac, ze w samym Reactcie kryje sie ogromny potencjal nawet przy tak kompleksowych zadaniach. W tym przypadku uzyjemy Context API, który w latwy sposób pozwala nam teleportowac dane z jednego miejsca naszej aplikacji do drugiego. Podczas rozbudowywania naszej aplikacji o Context API dopracujemy tez wszystkie inne jej elementy, aby na samym koncu kursu wydeployowac nasz gotowy produkt w serwisie Netlify – zobaczysz, ze wypuszczenie aplikacji Reactowej do sieci i udostepnienie jej innym, jest niezwykle proste.W tym kursie skupiamy sie wylacznie na Reactcie z uzyciem jedynie niezbednych narzedzi. Wierze, ze doskonale opanowanie fundamentów, na których opiera sie ta technologia pozwoli Ci pózniej latwiej wkroczyc w swiat setek pluginów i paczek dostepnych w jego ekoystemie.
Ten kurs powstal z mysla o osobach chcacych zaczac swoja przygode z frameworkami JavaSript. Zaklada on wiedze na temat podstaw JavaScript (w tym ES6), jednak przy bardziej skomplikowanych rozwiazaniach zawsze pojawia sie slowo wyjasnienia. \n\nPoziom kursu zostal dopasowany do osób, które maja za soba juz kilka projektów w czystym JavaScript i chca wejsc na wyzszy poziom, przygotowujac sie tym samym do pracy z ta technologia.
Kiedy już wiemy do odnosi się JSX, że tak naprawdę pod przykrywką jest
to metoda createElement wbudowana w React'a to możemy przyjść do tego, aby pozbyć
się tej okropnej struktury i zrobić z tego coś normalnego, czyli taki
podstawowy, funkcyjny komponent w React'cie. Nazywa się to komponent funkcyjny,
ponieważ jest to najzwyklejsza funkcja w JavaScript'ie. Jak
się pewnie domyślasz, komponenty nie wyglądają tak jak tutaj. Zresztą
utrzymanie ich w dużym projekcie byłoby czymś naprawdę karkołomnym. Dlatego
teraz usuniemy to wszystko i zrobimy dokładnie to samo co zrobiliśmy tutaj, tylko
przy użyciu JSX'a. Stworzymy funkcję strzałkową, która zwracać będzie prostego
div'a ze znacznikiem H1 i napisem
Hello World w środku i, jak
widzimy, nic się nie wydarzyło. Nic się nie pojawiło
w naszym oknie przeglądarki, a wynika to faktu, że
funkcje nie są prawidłowymi dziećmi w React'cie,
a tutaj podaliśmy tylko nazwę funkcji, bez wywoływania jej,
więc żeby ona pojawiła, żeby
ta struktura pojawiła się w drzewku DOM, żeby to wszystko
co zawarliśmy w tej funkcji zostało wyrenderowane w naszej aplikacji to mamy
dwa wyjścia. Albo możemy wywołać te funkcje i widzimy,
że to już działa. Wynika to po prostu z tego, że tak na prawdę
nie zwracamy tutaj struktury HTML, o czym już wiesz, tylko
zwracamy tutaj funkcję, więc jeśli w poprzednim przykładzie mieliśmy
po znaku równa się, po prostu createElement i lecieliśmy
dalej, a tutaj mamy funkcję, która zwraca nam dopiero
te createElement. No,
to musimy to jakoś wywołać, żeby to zostało zwrócone. Jednak to nie jest konwencja, której
używa się na co dzień w React'cie, ponieważ żeby wyrenderować takie App
do naszej aplikacji, używamy też znaczników JSX i to
jest równe temu, co przed chwilą pokazałem. Warto to również wspomnieć o tym, że App
jest takim wierzchnim komponentem, który jest zawsze
na górze i który zawsze wrzucamy do metody render. Tak nazywa się
ten komponent i to jest taka konwencja, która została na świecie przyjęta, więc
zawsze kiedy renderujesz jakąś aplikację, to warto żeby zachować
te konwencję i żeby właśnie nazywać ten komponent na samym wierzchu - App, ale,
ale o ile mnie pamięć nie myli, to mieliśmy tutaj jeszcze drugi znacznik H2, który
zawierał "Hello eduweb". Tylko,
jak widzisz ta struktura naszego JSX'a robi się kompletnie zagmatwana
i wystarczy, że dodałbym tu jeszcze jakiś jeden mały element i wszystko
by się wysypało. Po prostu, nie połapali byśmy się co zawiera co, więc
trzeba to wszystko przenieść na nową linijkę i w innych kursach można
zobaczyć taki zapis. Jak
widzisz wszystko działa. W naszej funkcji robimy nawiasy
klamrowe i dopiero tutaj robimy return i zwracamy
naszą strukturę, ale jeśli dość dobrze znasz JavaScript, a zwłaszcza składnie ES6
to wiesz, że po strzałce mamy tak zwany implicit return, czyli
nie musimy już używać tego keyword return, żeby cokolwiek zwrócić. Możemy
po prostu zamienić te nawiasy klamrowe na zwykłe okrągłe i dzięki
temu zaoszczędzimy trochę miejsca, a nasz komponent będzie jeszcze bardziej czytelny. Warto
tylko pamiętać o tym, że jeśli zrobimy z tego wyrażenie blokowe, czyli takie gdzie użyjemy nawiasów klamrowych,
to niestety nic tam tego nie wyjdzie, ponieważ wtedy
musielibyśmy to zwrócić w tym wyrażeniu blokowym. Ostatnią
rzeczą, którą należy zrobić nasze komponenty były identyczne z tym co zrobiliśmy wcześniej,
to musimy dodać im odpowiednie props'y. Będzie to className, mainHeader
oraz secondaryHeader. Jak
zerkniemy sobie do naszego inspektora, to zobaczymy, że nasze elementy
mają dokładnie te same klasy. Jak widzisz, tworzenie
komponentów funkcyjnych w React'cie jest bardzo proste i na pewno
łatwiejsze w utrzymaniu później jak nasza struktura aplikacji się
nieco rozwinie, niż ta ogromna struktura React createElement, którą pokazywałem
poprzedniej lekcji. Od przygotowania takiej podstawowej struktury aplikacji, dzieli
nas tylko jeszcze jeden krok, ponieważ trzymanie tego komponentu w pliku index.js
nie jest do końca rozsądne. Lepiej to przenieść do osobnego pliku, ponieważ tak
działa React, że każdy komponent trzymamy zazwyczaj w osobnym pliku. To jest taka
dobra praktyka, która podnosi czytelność aplikacji, więc uporządkujmy
ten projekt trochę w następnej lekcji, a później przejdziemy do budowania
pierwszej prawdziwej aplikacji w React'cie. Do zobaczenia w
następnej lekcji.