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ść! Udało nam się dotrzeć do ostatniej lekcji, w tej części kursu. Mamy już cały
komponent gotowy. Nasza lista wygląda dokładnie tak, jak na projekcie. Linki działają.
Wszystko jest okej. Nasz kod został nieco przerobiony,
żeby wyglądał dużo lepiej, więc teraz przyszła pora na ostatni
element tej układanki, w którym będą PropTypes. PropTypes jest
takie narzędzie w React'cie, które pozwala nam na weryfikowanie tego, jakiego
rodzaju props'y podajemy do naszego komponentu i czy aby na pewno, props,
który podaliśmy, jest właśnie odpowiedniego typu. Pozwala nam to uniknąć wielu
wpadek, wielu problemów związanych właśnie z innym typem danych,
które moglibyśmy podać. Na przykład, jeśli podawalibyśmy string'a,
to zamiast string'a, przypadkiem możemy wprowadzić liczbę i ta
liczba może nam generować jakieś niepotrzebne problemy. Dlatego teraz
pokażę Ci jak weryfikować te props'y i jak to robimy. I warto
wiedzieć, że każdy komponent, który przyjmuje props'y powinien posiadać takie
PropTypes do siebie przypisane. Więc teraz pokażę Ci, jak
to zrobić. Spójrzmy sobie na nasze komponenty. Po pierwsze, mamy tutaj dwa takie główne
komponenty. Jeden to jest komponent publiczny, czyli ListWrapper. Publiczny,
ponieważ tak jak już mówiłem w poprzedniej lekcji jest to komponent, który może
być używany przez wiele różnych komponentów. Jeśli zaszłaby taka potrzeba. Nie
jest tak, że on może znajdować się tylko w jednym komponencie. Taki komponent,
który znajduje tylko w jednym komponencie, to ListItem, ponieważ wykorzystywany
jest tylko przez ListWrapper i ten nazywamy komponentem prywatnym. I w tym
przypadku, to właśnie do niego podajemy jakiekolwiek props'y w naszej, powiedzmy,
aplikacji. Chociaż to tak do końca aplikacja nie jest, no ale powiedzmy, że
w naszym widoku. A props'em w tym przypadku jest item, który podajemy przy
pomocy spread operator'a, tak żeby wszystkie jego elementy zostały rozprowadzane
w naszym komponencie, w taki sposób, że możemy je później wyciągnąć, przy użyciu destrukturyzacji. I
w tym przypadku, w tym komponencie, wielkiej filozofii nie będzie, ponieważ wszystkie
props'y są string'ami. Niemniej musimy je zadeklarować, żeby uniknąć jakichś
pomyłek w przyszłości, więc teraz to zrobimy. Przede wszystkim, musimy zaimportować PropTypes. Z
biblioteki, która nazywa się PropTypes. Na dole
komponentu stworzymy teraz ListItem.propT ypes. Zauważ, że
w tym miejscu używamy małej litery, ponieważ jest to zupełnie coś innego, niż to. Tutaj
mówimy o PropTypes'ach, które należą do ListItem. Są jej częścią.
Natomiast teraz stworzymy
z tego obiekt i w tym miejscu zadeklarujemy wszystkie
te props'y, które podajemy. Czyli możemy sobie tak naprawdę skopiować
i wkleić w tym miejscu. Usuniemy tylko przecinki
i żeby zadeklarować PropType, o danym typie, to
po prostu używany PropTypes, który zaimportowaliśmy i nazywamy
typ danych, którego będziemy używać. W tym przypadku będzie to string. Moglibyśmy
użyć, na przykład, number. Moglibyśmy użyć function i tutaj uwaga,
bo wtedy używamy func, a nie function. Moglibyśmy użyć, na
przykład, jeśli to by była tablica jakichś elementów, to byłoby to arrayOf
i na przykład w środku byłaby PropType.string. Może
też tak się zdarzyć, ale o tym wszystkim powiem w następnych częściach kursu. Na
razie te nasze props'y są naprawdę proste, więc zostańmy przy naszym
stringu. I żeby powiedzieć, że ten string,
ten props, w naszym komponencie jest wymagany, że nie możemy uniknąć
tego, żeby go podać - musimy podać isRequired. I
w takim przypadku, nasz props zawsze będzie wymagany,
jeśli go nie będzie, to dostaniemy odpowiedni błąd w konsoli. Jednak
props'y nie zawsze muszą być wymagane, co więcej możemy nadać im jakąś default'ową, jakąś
domyślną wartość i powiedzmy, że w naszym przypadku, description nie
zawsze byłoby podane. No, nie chcielibyśmy, żeby tutaj było puste pole albo, że byśmy dostali
jakiś błąd. Więc załóżmy, że nasze description nie będzie wymagane,
czyli używamy isRequired, a pod PropTypes, które
zadeklarowaliśmy, robimy ListItem.defaultProps. I
w tym miejscu podajmy nasze description i
załóżmy, że wpiszemy tutaj "One afterof the React creators". I w tym
miejscu, jeśli
wrócimy sobie do naszego obiektu, gdzie deklarowaliśmy
wszystkie dane, czyli w folderze data i usuniemy,
na przykład, Dan'owi Abramov'i description. To
ten tekst powinien zostać zastąpiony przez nasz
ten, taki powiedzmy, placeholder. Ten defaultProps, który zostanie wrzucony,
w to samo miejsce. I wszystko działa. Może pokażę Ci
teraz, jaka jest droga tego props'a. ListWrapper podejmę item i tym
item'em jest, w tym przypadku, ten oto obiekt i
ten obiekt zostaje podany do ListItem. ListItem
destrukturyzujemy sobie wszystkie props'y. W tym nasz description, który w
tym przypadku nie istnieje, a jeśli nie istnieje, to sprawdzamy
czy propType został zadeklarowany i czy jest wymagany. Jeśli
nie jest wymagany, to React sprawdza, czy mamy jakieś defaultProps,
który zostanie przypisany do tej, do tego brakującego puzzla
naszej układanki. Czy może to czymś zastąpić. I tak to właśnie działa. I to
tyle, jeśli chodzi o takie podstawowe zastosowanie PropTypes'ów. W następnych
częściach tego kursu, dowiesz się nich dużo więcej. Dowiesz się jak tworzyć
takie bardziej zaawansowane struktury, jak nawet tworzyć pewne konkretne
kształty danych, które później będziesz wykorzystywać, żeby nie pisać wiele razy
tego samego, a w tej chwili to już wszystko. Bardzo Ci dziękuję za ukończenie pierwszego
etapu naszego kursu. Zapraszam cię do drugiego etapu, gdzie poznasz
dużo więcej, dużo bardziej zaawansowanych technik w React'cie. Już nie mogę się doczekać, żeby
to wszystko Ci pokazać. Do zobaczenia w drugiej części.