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 poprzedniej pokazałem Ci, jak stworzyć taki podstawowy komponent klasowy w
React'cie. Jednak, póki co nie ma on żadnego sensu, ponieważ extendujemy React.Component,
udostępniający nam kilka bardzo fajnych funkcji, ale tej
chwili nie wykorzystujemy, więc czas zacząć. Powiem tylko na wstępie,
że React.Component udostępnia dwie takie podstawowe możliwości. Pierwsza
to jest właśnie stan, czyli tak zwany state. Druga to jest lifecycle functions,
o których opowiem w dalszej części tego kursu. W tej chwili skupmy się jednak
na state'cie, czyli na stanie. Pierwsze co musimy zrobić, żeby zainicjować taki
stan, to po prostu, stworzyć obiekt state w naszym komponencie. Wpiszemy mu
tutaj tekst. A tutaj
mały błąd. To jest obiekt, nie musi być dwukropek, a następnie chcielibyśmy
go wykorzystać tutaj, w tym miejscu i żeby do niego dostać, musimy tak
jak w przypadku każdej klasy w JavaScripcie, odnieść się do niego jako do this, czyli
robimy this.state.text i w
tym momencie nasz state jest wyświetlany już w naszym widoku. Oczywiście,
nikt tą funkcją by się specjalnie nie ekscytował, gdyby służyła ona tylko do wpisywania
i wyświetlania statycznych wartości w naszej aplikacji. State to jest
bardzo potężne narzędzie, które pozwala nam na dynamiczną zmianę zawartości naszych
komponentów i właśnie o to w nim chodzi. Więc teraz dodamy sobie input w tym miejscu i
wpadniemy
na mały błąd, ponieważ właśnie zdaliśmy sobie sprawę z tego, że wszystkie
elementy w React'cie, w naszych komponentach, jeśli je zwracamy
w ten sposób, w JSX'sie. Muszą być oplecione w jakiś pojedynczy element i mówi
nam o tym sam React. Dokładnie mówiąc, w której linijce mamy błąd i z czego on
wynika. Podpowiada nam nawet, co mamy zrobić, czyli użyć tak zwanego
fragmentu. Pokażę ci teraz, jak to rozwiązać. Wcześniej używało
się div'a, którym oplatało się nasze elementy
i było to strasznie
nie fajne rozwiązanie, ponieważ wtedy ten div faktycznie pojawiał się w
naszym ostatecznym HTML'u, a być może my chcieliśmy, po prostu,
dodać jakieś dwa elementy, które będą luzem wrzucone do naszej aplikacji i nie będę miał żadnego div'a,
który będzie je oplatał. I tutaj z pomocą przyszły właśnie tak zwane fragmenty,
które wyglądały początkowo w ten sposób i symulowały one
w JSX'ie oplatanie naszych elementów, w jakiś pojedynczy, większy
element. Natomiast w samym HTML'u nic się nie zmieniało.
Jak widzimy, ten oplatający div zniknął. I to są
elementy wrzucone luzem. Biorąc jednak pod uwagę, że ta notacja nie była najpiękniejsza na
świecie, to stwierdzono, że jeszcze trochę się to uprości i teraz wygląda to
w sposób. Jak widzimy, nasz aplikacja działa. Mamy tutaj
fragment skróconej wersji i będziemy go wykorzystywać bardzo często w
tym kursie. Dlatego chciałem to teraz szybko wyjaśnić - skąd to się wzięło i jak to działa.
Nie ma tutaj żadnej dodatkowej magii i po prostu jest to coś, czego wymaga JSX. Jest
to naprawdę bardzo fajne ułatwienie. Pamiętam sam, kiedy tworzono jeszcze aplikacje z wykorzystaniem
tych div'ów w tym miejscu i to było okropne. Więc bardzo się cieszę, że w końcu to rozwiązano. Ale
koniec tej dygresji, wracamy do naszego state'u i jak możemy go zmienić. Przede
wszystkim, zaplanujemy co chcemy tutaj zrobić. Chcemy, aby nasz input wpływał
na nasz state, który następnie będzie wyświetlany w tym miejscu, a dodatkowo
zawartość naszego state'a, będzie także zawartością naszego
input'a. Będzie jego value i w ten sposób stworzymy
tak zwany, controlled input, czyli input kontrolowany, w którym posiadamy
tylko jedno źródło prawdy. Tak zwane Single Source of Truth i pierwsze,
co musimy zrobić, żeby do tego dojść. Żeby w ogóle to stworzyć, to musimy
zrobić funkcję, która będzie obsługiwać nasz event, wywoływany
podczas zmiany zachodzącej w naszym input'cie, czyli w momencie kiedy
coś będziemy wpisywać do naszego input'a, to będzie wywoływana jakaś funkcja i
żeby wywołać jakąś funkcję podczas zmiany, tworzymy EventListener
o nazwie onChange, w którym podajemy nazwę funkcji. Nasza
funkcja będzie się nazywać handleChange I w
tym momencie to będzie bardzo prosta funkcja, która loguje nam prostu Change. I uwaga, tutaj
podajemy tylko nazwę funkcji, a nie podajemy jej z nawiasami. Nawiasy
zawsze sugerują, że ta funkcja w danym momencie w danej linijce kodu
ma się wykonać. A my nie chcemy, żeby się wykonała na naszej linijce, tylko
żeby się wykonała w momencie wystrzelenia tego eventu. Więc teraz, kiedy
odpalimy sobie konsole i zaczniemy coś wpisywać w naszym input'cie, to zobaczymy,
że ta nie będzie zlogowane. Wyświetla nam się change, który mamy tutaj w console log'u. Więc
wszystko działa, tak jak należy. Jesteśmy na dobrej drodze do tego, żeby
zacząć zmieniać nasz state za pomocą tego input'a, ale o tym dowiesz
się już następnej lekcji, ponieważ będziemy wykorzystywać specjalną metodę udostępnioną
nam przez React'a.