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 pokazałem Ci, jak podawać
props'y do komponentów. Teraz już wiesz - możesz podawać w taki sposób, że
tworzymy nazwy, a następnie podaj mi jakąś wartość. Tutaj akurat podawaliśmy
coś, co za zaimportowaliśmy sobie z zewnętrznego pliku. Natomiast mogłoby się
tu znaleźć dosłownie wszystko. Moglibyśmy tutaj podać string'a, moglibyśmy
tutaj podać liczbę, a nawet boolean,
która akurat teraz się nie pojawi, no bo on jest traktowany faktycznie
jako boolean, więc musiałby robić coś związanego z logiką wewnątrz tego
komponentu, ale o tym też porozmawiamy sobie później. Jeśli
jednak przyjrzymy się naszemu plikowi z danymi to zauważymy, że zapomnieliśmy
o jednej rzeczy, a mianowicie od Twitter linku i teraz sobie go podamy. Wrócimy
sobie do naszego ListWrapper'a i w
każdym miejscu podamy
Twitter link. Może zrobimy po prostu tutaj link, a tutaj
zrobimy twitterAccount. Okej, zrobiłem literówkę, twitterAccounts. Okej,
teraz jak wejdziemy sobie do naszego ListItem, to zobaczymy jeszcze jedną
rzecz, że button jest button'em, a nie linkiem, więc teoretycznie powinien
to być a, który będzie miał href,
do którego podamy nasz props link. Zmieni
nam się tylko wygląd naszego button'a ale to szybko możemy ostylować. Zrobimy mu
mniejszy font-size, powiedzmy na 10 pikseli i text-decoration
wywalimy, tak żeby to faktycznie wyglądało jak button. Teraz,
jak klikniemy sobie na nasze button'y, to one faktycznie przekierowują nas do
odpowiedniej strony. Jeśli spojrzymy sobie na naszej konsoli, to
zobaczymy kilka ostrzeżeń I to jest właśnie bardzo fajne Create React App,
że on opowiada nam, co tak naprawdę zrobiliśmy źle w naszej
aplikacji i tutaj widzimy dwie rzeczy. Przede wszystkim mamy tutaj nie używany
import, ponieważ już dłużej nie używamy go w tym komponencie. Możemy go spokojnie usunąć
i dodatkowo mamy jeszcze ostrzeżenie o tym, że nie mamy
parametru alt w naszym obrazku, więc
teraz zrobimy tak, że rozwalimy to sobie na kilka linijek.
I dodamy
jeszcze parametr alt, który w tym wypadku zrobimy
sobie jako imię naszego bohatera, czyli tutaj będzie po
prostu props.name. Okej, nie
mamy żadnych ostrzeżeń, możemy sobie to zamknąć i nasza lista jest już skończona.
Dan Abramov nam się coś zbuntował,
bo
nie usunąłem string'a tym miejscu. Tak, teraz wszystko działa i tak
jak obiecałem, teraz pokażę ci jak zrobić, żeby tutaj bo tylko
jeden komponent i który automatycznie będzie przyjmował tyle props'ów,
ile będzie w naszym zaimportowanym pliku. Zrobimy to przy użyciu
funkcji map. Jest to jedna najprzydatniejszych rzeczy, jeśli
chodzi pisanie komponentów w React'cie, bo dzięki funkcji map możemy, po prostu, importować
sobie jakieś zewnętrzne dane i później, nie licząc ile jest tych
elementów wewnątrz tego pliku, po prostu je wszystkie wyregulować, więc
teraz usuniemy sobie wszystkie pozostałe komponenty i
żeby wewnątrz JSX'a zastosować jakiekolwiek wyrażenie JavaScript'u, to
musimy po prostu wewnątrz naszego komponentu otworzyć wąsy i zacząć
pisać naszą funkcję. Będzie to twitterAccounts.map(). Jeden
item zwróci nam to, co mamy tutaj. Różnica
jest tylko taka, że w tym miejscu nie będziemy się odwoływać do naszego twitterAccounts,
zaimportowanego, tylko do item, ponieważ to item jest tym elementem, po
którym aktualnie funkcja map sobie iteruje. To jest jeden z elementów
naszej tablicy, więc każde twitterAccount zero,
zamienimy sobie item. I teraz
wszystko powinno działać. Uwaga, chwila prawdy. Świetnie,
wszystko jest tak jak należy. Linki działają? Działają,
świetnie. I popatrz, że z bardzo długiego
komponentu, zrobiliśmy bardzo krótki, który zawiera w sobie sprytną funkcje, która literujeiteruje
nam po całej tablicy zaimportowanej do pliku, a następnie renderuje
nam w bardzo inteligentny sposób to, co w tej tablicy się znajduje, a właściwie w
każdym obiekcie, zawartym w tej tablicy. Obiektów mamy 4 i te
obiekty mają różne parametry, tak jak name, description, link, avatar i tak dalej. I
wszystko to podajemy właśnie w tym miejscu. Mam nadzieję, że cieszysz
się równie mocno jak ja, że nasz komponent działa. Jednak nie byłbym sobą, gdybym nie
wspomniał tutaj o ulepszaniu naszego kodu. O tym co możemy zrobić, żeby
ten komponent wyglądał jeszcze lepiej. A powiem ci w tajemnicy, że z tego
możemy zrobić jedną linijkę, ale o tym wszystkim dowiesz się już w następnej lekcji, którą poświęcę
właśnie na refaktoring, czyli na ulepszaniu naszego kodu. Do
zobaczenia w następnej lekcji.