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ść. Witaj w kolejnej lekcji. Teraz przyjrzyjmy się chwilę naszemu komponentowi
listy i zobaczmy z czego składa się ListItem. Po pierwsze
mamy tutaj avatar, który mamy po lewej stronie. Następnie prawdopodobnie w
osobnym div'ie będziemy mieć imię i nazwisko, czyli powiedzmy,
że to będzie taki header'ek. Później mamy jakiś tekst, jakieś description
i button i to będą cztery główne komponenty, z
których będzie składać się nasz ListItem, więc
teraz przejdźmy sobie naszego kodu i stwórzmy tag Po pierwsze obrazek,
który będzie pojedynczym takim
samozamykającym się i tutaj za chwilkę mu podamy źródło, a następnie potrzebujemy
jeszcze div'a, który będzie oplatał nasze imię i
nazwisko. Nasze description i nasz button. W button'ie
mamy "visit twitter page". Tutaj
na razie przykleimy sobie jakiś fragment. Może trochę dłuższy, żeby,
żeby zobaczyć jak on się będzie układał, a tutaj damy
Dan Abramov. Dostaliśmy
błąd po prawej stronie, ponieważ nie mamy źródła obrazka i póki
co, nie będziemy importować go naszego folderu data, bo to zrobimy później
jakby, robiąc wszystko na raz, a w tej chwili po prostu zaimportujemy
sobie jeden plik z Dan'em Abramov'em z naszego folderu images, więc
teraz przejdźmy do naszego komponentu i zaimportujemy danAbramovimage. Okej,
podejemy go teraz w tym miejscu. Okej i wszystko
działa i prawdopodobnie możecie się zastanawiać, co dlaczego wrzuciliśmy danAbramovimage w
nawiasy klamrowe. Wynika to po prostu z tego, że JSX, tak jak już mówiłem, jest
zwykłym javascript'em i wyrażenia JavaScript'owe możemy wrzucać właśnie w
nawiasy klamrowe, a danAbramovImage jest niczym innym, jak po
prostu modułem, zaimportowanym do naszego pliku JSX, a nie jest string'iem,
gdzie przekazalibyśmy ścieżkę do tego pliku. Jakby miało to miejsce w
takim zwykłym HTML'u Mamy pierwszy komponent napisany. Wygląda on
tragicznie ale za chwilkę się tym zajmiemy. Przede wszystkim, żeby poprawnie oscylować
wszystko musimy każdemu elementowi naszego komponentu dodać odpowiednią klasę i
teraz czeka tutaj na nas pewna niespodzianka i pewnie pułapka, bo
jeśli importujemy po prostu pliki CSS, to klasy, które stylujemy
czy nawet tag'i, które stylujemy staną się stylami globalnymi. Dlatego musimy
unikać tych samych nazw klas I tych samych tag'ów do stylowania. W
dalszej części tego kursu pokażę ci jak unikać tej pułapki wykorzystując
nieco bardziej zaawansowane narzędzie, ale póki co importujemy zwykłe pliki CSS,
dlatego przejdziemy sobie teraz na BEM, czyli metodę nazewnictwa
klas, która pozwala nam unikać właśnie tego typu konfliktów. BEM,
czyli Block Element Modifier, jeśli nie znasz tej metodyki, zapraszam cię na stronę getbem,
gdzie zapoznasz się z podstawami tej metodyki, z podstawami nazewnictwa
klas, które pozwala na unikanie konfliktów między komponentami. Nie
jest to jednak tym momencie wiedza niezbędna, bo po prostu możesz naśladować to, co robię
na twoim ekranie. Naszym blokiem w tym wypadku jest ListItem, a elementem
jest Wrapper. Przejdziemy sobie
teraz do pliku CSS i również nazwiemy to w ten sposób.
Okej, nazwiemy
teraz pozostałe elementy, zanim przejdziemy do stylowania. Okej,
czyli mamy klasy listItem__wrapper, listItem__image. Name description i button. Teraz
przejdziemy sobie do CSS'ów. Te nazwy klas łatwo zapamiętać, więc
po prostu będziemy je teraz stylować. Skopiujemy sobie to, żeby
było nam łatwiej. Chcemy, żeby nasz obrazek miał 150
pikseli szerokości i wysokości, żeby
miał okrągłe boki. Nasze
imię i nazwisko powinno być koloru niebieskiego, który zaimportuje
sobie teraz, ze Sketch'a, a ponadto
musi być nieco grubsze. Okej
tutaj mój błąd importując onts Google Font'a nie uwzględniłem wszystkich
grubości font'a, które będę potrzebował, więc teraz muszę
chwilę wrócić na Google Fonts i w zakładce CUSTOMIZE
chcemy mieć light, bold
i medium. Ponownie skopiujemy sobie import i nadpiszemy
go tutaj w tym miejscu. Teraz
mamy grubości 300, 500, 700. Wrócimy
do ListItem. Nasz tytuł się odpowiednio pogrubił. Natomiast
description będzie właśnie trzysetką, natomiast
button 500. To
co nam się totalnie nie zgadza to to, że obrazek mamy nad naszymi tekstami, więc
teraz musimy zrobić naszego rapper'a flex. A dodatkowo
nasz button nie może
mieć żadnego tła. Border
będzie miał 2 piksele, solid i color,
który jest również widoczny w naszym nagłówku. Podobnie
jeśli chodzi kolor, jeszcze
zwiększymy padding. Z tego co wiem, to
on wszędzie ten padding ma w miarę równy. Spróbujemy 15
pikseli. No nie, zdecydowanie nie dobrze to wygląda. Okej
i chcielibyśmy, żeby zdjęcie było wycentrowane z naszą treścią, więc
tutaj musimy jeszcze zrobić align-items: center
i dodatkowo, ponieważ jeśli
sobie podejrzymy, to nasz header ma dość duży margines z
góry. Na razie usuniemy mu ten margin. Okej,
mamy wycentrowany content, mamy podstawowe style do naszego
komponentu. Za chwilkę tego wrócimy, żeby go jeszcze odpowiednio
wykończyć, ale to już w następnej lekcji.