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.
Cześć! W tej lekcji zaczniemy tworzyć komponent nawigacji, dzięki któremu będziemy
mogli swobodnie przemieszczać się między podstronami, które stworzyliśmy w poprzedniej lekcji, ale
zanim do przejdziemy, to jeszcze mamy jeden niedokończony wątek, bo obiecałem,
że powiem, co możemy robić zamiast tego exact, bo w tym momencie exact
faktycznie działa, ale tylko na ścieżkę dla strony głównej, a w momencie gdyby mielibyśmy na
przykład, coś takiego, że notatka ma jeszcze jakieś id,
dwukropek przed nazwą w naszym... dwukropek
przed nazwą w naszej ścieżce oznacza, że to jest jakaś zmienna. To
id, tak naprawdę może wyglądać na przykład tak, czyli faktycznie jest
jakimś id i pokażę ci, co to robi. Jeśli
przejdziemy sobie do notes, to oczywiście mamy notes, a jeśli przejdziemy
sobie do notes i podamy faktycznie jakieś id, może być to jakiś numer identyfikacyjny,
na przykład naszej notatki, to wtedy notes wyrenderuje nam się dwa razy, bo
renderuje się stąd stąd. A wynika to faktu, że obie te ścieżki
są do siebie bardzo podobne i tak naprawdę ta ścieżka zawiera w sobie część
tej ścieżki, przez co obydwie się nam renderują i tak
jak wspominałem, to jest zamierzone - tak wymyślono właśnie React Router, żeby czasami
na jednej ścieżce pojawiało kilka komponentów, ale
jeśli chcemy temu zapobiec. Jeśli chcemy, żeby na jednej ścieżce wyświetlał
tylko jeden komponent, to mamy do tego jeszcze jeden komponent z naszego React Router DOM,
które możemy zaimportować. Nazywa się Switch. Już
sama nazwa podpowiada nam, że jeśli użyjemy go w tym miejscu, to
faktycznie te nasze komponenty będą się switch'ować. Zauważ,
że jeśli przejdziemy sobie teraz do notes z id,
to nie wyświetla nam się notes dwa razy, tak jak wcześniej. Jeśli
wrzucimy do naszego notes, to mamy też notes. Jeśli
wrócimy do strony głównej, mamy TwittersView i Articles
też powinno działać. Tak i właśnie w ten sposób działa Switch,
że wszystko, co znajduje się wewnątrz tego switcha, jest wymienne -
to znaczy, że jeśli renderowany jest jeden komponent, to drugi
nawet jeśli spełnia ten warunek, tej ścieżki, to nie zostanie wyrenderowany. Jeśli
wyrzucilibyśmy tego Route'a poza naszego Switcha, w tym miejscu. Przeszli
byśmy do naszych notatek, to
zauważ, że on znowu się pojawił. Ten drugi Notoes. I w ten
sposób możemy kontrolować, które ścieżki są na Switch, które powinny
wyświetlać tylko jako pojedyncze komponenty, a które mogą
być jakimś dodatkowym komponentem i tę właściwość wykorzystamy przy tworzeniu modala,
ale tym później. Wrócimy zatem do naszego
porządku, żeby wszystko było jak należy i możemy teraz spokojnie
zacząć konstruować nasz komponent nawigacji. Stwórzmy więc w
naszym folderze components nowy folder, nazwiemy go
Navigation, a w nim nowy plik Navigation.js. Zaimportujemy oczywiście React'a. Stworzymy
sobie zatem prosty komponent, w którym będzie lista, w tej
liście będziemy mieć trzy linki i kolejne te linki będą prowadzić
do strony głównej, articles oraz
notes. Okej, teraz
musimy to wyeksportować. Zaimportujemy
sobie to do naszego widoku hurtowego i wrzucimy
nad nasze Hello World. Okej,
teraz jeśli wszystko poszło dobrze, to nasza nawigacja powinna działać i faktycznie,
jesteśmy przenoszeni na odpowiednie ścieżki. Tylko
to, co możesz zauważyć, to że podczas zmieniania ścieżki, nasza
strona jest przeładowywana. Trwa to ułamek sekundy, ale na chwilę nam miga.
I to jest właśnie ten problem, o którym mówiłem w pierwszej
części, gdzie mówiłem o React Routerze. Nasza strona wysyła zapytanie do
serwera, a my chcemy przechwycić to zapytanie i powiedzieć - hola, hola, my
nie chcemy nic od naszego serwera. My to wszystko mamy w plikach JS, już gotowe.
Możemy to po prostu zaserwować. Nie chcemy doładowywać żadnego
pliku HTML, dlatego nie musimy przeładowywać naszej strony. I w
tym nie potrzebujemy naszych linków, w postaci a, w
postaci anchor tag'ów. Potrzebujemy czegoś, co właśnie pozwoli
nam przechwycić to zapytanie do serwera i to, co musimy zaimportować
nazywa się link. Oczywiście zaimportujemy to z React Router DOM.
Przed nami jeszcze jedno
ulepszenie, w związku tym linkiem, ale nie będę teraz zdradzał, o co chodzi. Na
razie, po prostu, zamienimy te wszystkie a na linka. I tutaj
zamiast href, musimy zmienić props'a na to. I spójrz. Teraz,
kiedy będę klikał w linki, nasza strona nie będzie się już przeładowywać,
czyli będziemy mieć takie pełne Single Page Application. Takie o
jakim marzymy. Pięknie. Zero
przeładowań. Wygląda to po prostu świetnie. Nie,
może trochę przesadzam, to są tylko proste linki, nawet nie ostylowane, ale
jesteśmy na dobrej drodze, żeby zrobić coś fajnego. Stylowanie naszej
nawigacji, dodawaniem logo, dodawaniem button'a new item, zajmiemy się już
kolejnej lekcji.