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 lekcji zaczęliśmy tworzyć nasz komponent klasowy. Mamy
już zadeklarowany state, czyli nasz stan. Mamy też funkcję, która obsługuje
nam event, wykonywany na naszym input'cie przy evencie Change. Więc
jeśli ten Change jest w końcu wywoływany, poprzez jakąś zmianę w tym
miejscu, to uruchamiana jest ta właśnie funkcja, która
loguje nam, póki co, tylko Change. Ale za każdym razem, kiedy jakiś
event w JavaScript'cie jest wykonywany, wtedy wysyłany jest także taki
obiekt event, który zawiera wszystkie informacje dotyczące tego
event'u. Zawiera on także wartość naszego input'a. Znajduje
się ona pod kluczem target.value, więc jeśli przekazalibyśmy
ten event, jako parametr do naszej funkcji handleChange - w tym miejscu,
to moglibyśmy
go wylogować, dostając się właśnie do target.value i
w tym miejscu, jeśli wpiszemy
coś w naszym input'cie, to zobaczymy w konsoli dokładny wynik tego, co wpisaliśmy. Jak
widzisz za każdym razem, kiedy event Jest wywoływany, logowany
jest kolejny wynik z naszego event'a. Więc
to co chcielibyśmy teraz zrobić, to wpłynąć na to, jak
wygląda nasz state, wywołując odpowiednią funkcje, właśnie tym miejscu
i podając nową wartość state'u, znajdującą
się w naszym event.target.value. Może brzmi to skomplikowanie, ale tak naprawdę
jest bardzo proste. Prawdopodobnie pierwsza myśl, jaka przychodzi CI do głowy - jak
moglibyśmy zmienić nasz state, to przez stworzenie czegoś takiego jak this.state.text
równa się i tutaj event.target.value.
Niestety ten sposób nie zadziała, bo jak zobaczysz,
jeśli wpiszemy coś tutaj w tym miejscu, a pamiętaj że nasz
H1 wyświetla nam obecny state, to nic się nie zmienia. Wynika
to z tego, że nasz komponent, po prostu, nie jest renderowany ponownie. Musimy do tego wykorzystać
specjalną metodę, którą udostępnił nam React. Nazywa się ona setState
i żeby ją wykorzystać, musimy najpierw podać this, ponieważ musimy
pokazać do się odwołujemy - setState, wewnątrz funkcji setstate
używamy obiektu, który jest po prostu odzwierciedleniem
obiektu w tym miejscu. Podajemy jaki klucz z naszego state'u chcemy zmienić. W
tym wypadku mamy tylko jeden klucz - jest to tekxt. I podajemy tutaj nową
wartość dla naszego state'u. W tym przypadku będzie to event.target.value,
czyli zawartość naszego input'a, podawana w evencie, w tym
miejscu. Pamiętaj, że to że nazywamy to event, nie ma żadnego znaczenia. Mogłoby
się to nazywać, na przykład i, czy też e. Taka
jest konwencja, też nazewnicza. Zazwyczaj właśnie e, widzimy jako event, podawane
jako parametr do funkcji. I w tym momncie, jeśli zmienimy coś naszym
inpucie, to otrzymamy błąd. Dlaczego otrzymaliśmy błąd?
Taged, zjadłem
literkę. Zdarza się. Okej, teraz powinno działać. Tak,
wszystko jest okej, ale żeby stworzyć prawdziwy controlled component,
musimy zrobić jeszcze jedną rzecz. Wyobraźmy sobie, że nasza
funkcja handleChange jest nieco bardziej skomplikowana. Na przykład wymusza na użytkowniku
stworzenie nazwy składającej się wyłącznie z dużych liter i nie
można tego zrobić inaczej. W sensie użytkownik nie ma absolutnie żadnej możliwości
wpisania małych liter. W takiej sytuacji, najłatwiej będzie, skoro
już w tym miejscu pobieramy sobie wartość naszego input'a i wklejamy
ją, czy też właściwie podmieniony nasz state na nową wartość w tym miejscu. Dobrze
było by podmienić zawartość input'a na zawartość naszego state'u -
wtedy kolejność byłaby taka, że najpierw odpala się event, event podmienia state, state podmienia
value w naszym inpucie. Więc teraz tutaj piszemy
this.state.text i załóżmy,
że chcielibyśmy żeby tu było toUppercase. I w
tym momencie widzimy, zanim cokolwiek zmienimy, że nasz placeholder zniknął, ponieważ nasz
import posiada już jakąś inicjalną wartość, więc teraz jeśli ją usuniemy,
to widzimy, że on się znowu pojawi. Troszkę
powiększy nasz widok. I tym momencie, jeśli coś wpiszę, to
ta funkcja sprawi, że wszystko będzie napisane wielką literą i wszystko
działa. W ten sposób stworzyliśmy tak zwany controlled component, który podaje
nam wartość w evencie. Ta wartość w evencie podmienia nam state, a state
wpływa na wartość naszego input'u. Na pierwszy rzut oka, może się
to wydawać bardzo skomplikowane i bardzo takie na około, ale uwierz
mi, że w przyszłości, w dalszej części budowania tej aplikacji, tego typu
rozwiązanie naprawdę ułatwia nam życie. To tyle w tym odcinku i zapraszam
kolejnej lekcji.