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 udało nam się stworzyć w końcu formularz, który
dodaje nowe elementy, a dodatkowo ładnie się animują -
jak je dodajemy to wjeżdżają ładnie w ekran, więc wszystko jest super. Niestety
sam formularz nadal wymaga trochę pracy, ponieważ pierwszą taką
jego główną wadą jest to, że możemy dodawać elementy, które kompletnie nic nie mają. Więc
są puste i bezużyteczne. Chcemy temu zapobiec i żeby to zrobić
najłatwiej, po prostu, dodać taką prostą walidację. Bardziej
skomplikowaną walidacją zajmiemy w dalszej tego kursu. Natomiast teraz to
zupełności wystarczy, czyli do wszystkich elementów dodamy tag -
required, dzięki temu już nie możemy dodawać nowych
elementów, bez pisania wymaganych pól. Jedynym elementem, którego
nie chciałbym wymagać od użytkownika jest image, ponieważ może ktoś nie chce dodawać
obrazka do każdego elementu i w takim wypadku fajnie jest zrobić coś, co
będzie takim default'owym wyglądem. Jeśli nie będzie żadnego obrazka - w takim
wypadku musimy usunąć z naszego image - required
i dzięki temu możemy dodawać imię,
link bez obrazka, jakiś
tytuł i zobaczymy, że mamy bardzo brzydki
element naszego HTML'a wynikający z tego, że wyświetla nam
się alt, ale nie mam żadnego obrazka. W takiej sytuacji musimy
pójść do naszego ListItem i naszych propTypes usunąć
isRequired, ponieważ ten element nie jest dalej wymagany i musimy nadać
mu jakąś domyślną wartość. W tym wypadku będzie to null, ponieważ
jeśli damy tutaj null'a, to również jest dla nas bardzo cenna informacja i zaraz
pokażę ci dlaczego. Zmieńmy tutaj nasz implicit return
udziałem naszej funkcji na tak zwany explicit return, czyli
słowo return pojawi się tutaj, w tej funkcji. Nadal będzie miało
okrągłe nawiasy. Robię to
w ten sposób, ponieważ w tym miejscu musimy dodać pewien warunek - musi on się znajdować
wewnętrz naszej funkcji, ponieważ tylko wtedy ma dostęp do props'ów,
które zostały podane do tej funkcji, więc tutaj robimy const ImageTag. Jeśli
image jest podany, to będzie to IMG, jeśli nie, to
będzie to div i zobacz w jak prosty sposób możemy wpływać
na to, jaki tag ma nasz element w JSX'ie. Voilà, i
w tym momencie, może sobie to sformatujemy. To
wrzucimy na nowe linie, żeby lepiej wyglądało
i w tym momencie, jeśli podamy
image w tym miejscu, to zostanie on oczywiście wyświetlany jako zwykły IMG -
tak jak nasz Dan Abramov, w tym i w tym miejscu. Natomiast, jeśli tego image nie
będzie, to będziemy mieli div'a. Div'a, który póki co, nie
wygląda. Zresztą zobaczmy sami.
Damy tutaj Roman, image nie dajemy. Okej,
jego nie ma, znaczy jest, ale nie widzimy go i w
takim wypadku musimy wejść do naszego ListItem i stworzymy
sobie klasę, która będzie odpowiadać za to jak
wygląda nasz div, kiedy nie ma image. Robimy
imageNone. Jedyne, co chcemy dodać,
to background: lightgrey. Extent
to jest metoda właśnie Ssasa, czy też CSS'a,
pozwalająca na rozszerzanie innej klasy, więc tutaj mówimy,
że ta klasa ma mieć dokładnie takie same parametry jak klasa
image, jednak z dodanym pewnym parametrem, jakim
jest background i nie zapominając tym że className w tym
miejscu, jest czystym JavaScript'em, to tutaj również możemy użyć ternary operator,
czyli tego co mamy tutaj. Jeśli image
nie ma, to będzie miało inną klasę, styles.imageNone I
w tym momencie, kiedy dodamy
jakiś element, bez
żadnego obrazka to wyświetli
nam się kółko, tak jak zadeklarowaliśmy w naszej klasie. Jest
to zdecydowanie lepsze, niż po prostu brak czegokolwiek. A jeśli
chcielibyśmy jeszcze trochę podnieść walory estetyczne naszej aplikacji, to oczywiście możemy to
zrobić w naszym pliku ze stylami. Możemy
zastąpić zwykły szary kolor, jakimś ładnym tłem. W tym wypadku
możemy użyć na przykład https://unsplush.it, podajemy
tutaj wymiary obrazka. Mówimy, że ma się nie powtarzać,
to dam jeszcze background-size: cover i w
tym momencie, jeśli dodam jakiś nowy element, to
pojawi się ładny obrazek. Jest jeszcze jedna
rzecz, która mnie denerwuje w tym formie, a mianowicie autoComplete.
Myślę, że jest tutaj zupełnie zbędny i możemy go pozbyć i żeby to zrobić,
najłatwiej jeśli wejdziemy do form.js i przy tag'u
form dodamy autoComplete pisane Camel Case'm,
w przeciwieństwie do zapisu z HTML'a i
teraz, o, już tego nie mamy. Pamiętaj,
że jest to rozwiązanie, które jest sprawdzane na Chromie. Natomiast w innych przeglądarkach
czasami trzeba jeszcze dodać input dodatkowy, który jest ukryty. Niemniej
ma właśnie ten tag, autoComplete również w sobie, ale z
racji, że my korzystamy wyłącznie Chrome'a w kursie, to póki co się tym nie przejmujemy. I
w tej lekcji to na tyle. W następnej lekcji zajmiemy się wyjęciem
pewnych elementów powtarzalnych naszych komponentach do osobnych komponentów,
żeby stały się one bardziej reużywalne, żeby nasz kod stał się jeszcze bardziej czytelny
i dzięki temu będziemy gotowi na dalszą podróż dalsze rozbudowywanie
naszej aplikacji, ponieważ mam jeszcze kilka ciekawych funkcji, które chciałbym tu z tobą
zaimplementować. Także do zobaczenia w następnej lekcji.