w Praktyce
6 godz. 51 min · ReactJS · Full-stack i Programowanie
Adam RomanskiFrontend developer & YouTube CreatorNarzędzia typu ESlint, Prettier, Husky czy lint-staged niezmiernie pomagają nam w pracy. Problem jednak polega na tym, że ich konfiguracja bywa kłopotliwa. W tym kursie dowiesz się, jak poprawnie skonfigurować te narzędzia, tak, aby nie wchodziły ze sobą w konflikty i pomagały nam pisać lepszy kod.
Brzmi jak zły pomysł? Wcale nie! CSS in JS to rewolucyjne podejście, które pozwala nam tworzyć style bezpośrednio w komponentach. Dzięki bibliotece Styled Components możesz wpływać na ich stan, wygląd i wiele innych rzeczy. To niezwykłe narzędzie, wprowadzające powiew świeżości dla ludzi zmęczonych czystym CSS.
Dokumentowanie wyglądu i zachowania naszych komponentów bywa kłopotliwe. Jeśli jednak użyjemy odpowiednich narzędzi, staje się banalne! Storybook w połączeniu z podejściem atomic design pozwoli nam na stworzenie świetnie udokumentowanych komponentów.
React w Praktyce nie byłby... praktyczny, gdyby nie pokazanie tego, w jaki sposób rozwiązuje się problemy z layoutem aplikacji. Sidebary, szablony, powtarzalne komponenty – to wszystko poznasz w tym kursie.
Tworzenie store, czyli warstwy z danymi w naszej aplikacji dla wielu bywa wyzwaniem dość trudnym. Wynika to często z tego, że przykłady Reduxa bywają niepraktyczne. W tym kursie dowiesz się, w jaki sposób działa Redux – zaczniemy od podstaw, a skończymy na rozbudowanej strukturze danych. Dzięki temu zobaczysz, że nie taki Redux straszny jak go malują.
Aplikacja frontendowa bez backendu może istnieć, choć jej możliwości będą zdecydowanie ograniczone. A już na pewno będzie ona miała kiepską pamięć. Dlatego w tym kursie stworzymy lokalną wersję backendu połączoną z MongoDB na mLab. W ten sposób będziemy mogli dłużej przechowywać dane zapisane w naszych komponentach.
O testach można mówić wiele. To niezwykle rozległy temat, dlatego zanim zaczniesz je pisać na poważnie, chcę Ci pokazać jak możesz poćwiczyć podstawowe rzeczy. Poznasz narzędzie JEST, które odpowiada za uruchamianie testów, oraz wprowadzę Cię do react-testing-library, jednej z najpopularniejszych bibliotek do testowania aplikacji reactowych.
Ten kurs przeznaczony jest dla osób, które lada dzień będą aplikować na stanowiska juniorskie jako React developer. Zawarłem w nim wiele aspektów pracy z React, które zdarzają się w prawdziwej pracy. Ponadto skorzystać mogą z niego osoby, które znają inny framework JS i chcą nauczyć się Reacta, jednak kursy od podstaw są dla nich zbyt proste.
16.8.x
Cześć, w poprzedniej lekcji przygotowaliśmy sobie klasy card, która będzie nam potrzebna
do tego żebyśmy mogli przekierowywać użytkownika po tym jak kliknie sobie
w ten styled wrapper do konkretnego widoku z notatką
o konkretnym id, ale najpierw zobaczymy o co tutaj chodzi z tym. Wykorzystaliśmy
tutaj notację class properties, która na razie jest tylko w babelu i ESlint
nie ogarnia co my tutaj wpisaliśmy, więc musimy sobie doinstalować
do naszego ESlint'a taką paczkę, która się nazywa ESlint babel albo
babel-eslint, zaraz zobaczę, babel-eslint
i po tym jak nam się to zainstaluje, otworzymy
sobie nasze eslintrc i żeby
on zaczął ogarniać o co nam tutaj chodzi, musimy podać mu parser, który
właśnie będzie się nazywał babel-eslint. Poczekam, aż się zainstaluję
ta paczka i ten błąd powinien zniknąć. Dobra, wracamy
do naszego komponentu, czekamy chwilę ESlint zacznie działać
na nowo, okej błąd zESlint'a zniknął, tylko
ja tutaj zrobiłem jeszcze błąd, dałem dwukropek zamiast znaku równa się, więc
teraz wszystko powinno być okej. To sobie zamkniemy
i teraz stwórzmy sobie funkcję, która pozwoli
nam na obsługiwanie tego kliknięcia tutaj. Będzie
to bardzo prosta funkcja i teraz w naszym render
możemy ustalić coś takiego is this state redirect,
wtedy podajemy
tutaj props'a redirect i mówimy mu dokąd
ma iść, a
w każdym innym przypadku będziemy zwracać
to. Teraz tutaj on click podamy
właśnie nazwę tej funkcji i tutaj
jako ten link możemy stworzyć taki zlepek. Będzie
to template string i tutaj mamy card type slash, id
to powinno działać. Przejdźmy sobie do naszej aplikacji. Okej,
nie dałem tutaj const'a. No tak,
bo consta tutaj nie powinienem dawać, okej. Tutaj w tym miejscu
nie dałem this, teraz wszystko
gra. Jak sobie kliknę na kartę to
przechodzę do notatki o konkretnym id i tutaj
uwaga, te widoki nie są responsywne, więc jeśli pracujesz na mniejszym monitorze
i twoje karty wyglądają tak, to pamiętaj, że możesz sobie dostosować ten wygląd
w grid-template. Ja jeszcze na szybko, żeby odkurzyć trochę naszą konsole
naprawie te błędy związane z prop types'ami. Widzę że array nam umknęło,
okej widzimy jeszcze, że user page template dostaje
złego props'a, ponieważ on tutaj może mieć albo element, ale
może mieć też node, więc dlatego daliśmy tutaj one of type i jedna
z dwóch niech sobie wybiera i teraz będzie git. Okej,
a teraz sprawmy, żeby nasz sidebar był tego
samego koloru, co jego jakby właściwy widok, jeśli
jest na twitter'ach wchodzimy w twittera, no to niech będzie niebieski. W ten
sposób zawsze będziemy wiedzieć gdzie jesteśmy naszej aplikacji, tak to sobie mądrze wymyśliłem,
więc teraz wejdziemy sobie details template, a właściwie do
details page i teraz mam taki plan żeby właśnie stworzyć
tylko jedną stronę, która będzie odpowiednio miała doasowaną
logikę, żeby nie tworzyć osobnych stron dla Twitter'ów, notatek i artykułów
tylko, żeby była jedna, ona będzie miała renderowanie warunkowe i będzie wiedziała czym
ona jest, żeby to zrobić musimy tutaj stworzyć klasę i teraz
żeby ten komponent wiedział czym jest musimy sobie stworzyć state
o nazwie Page Type i początkowo
niech to będzie notes i teraz pora na krótkie wytłumaczenie czym sa React Lifecycle Methods,
ponieważ nigdy jeszcze tego nie używaliśmy i są to takie metody, które
zawiera wyłącznie klasy w React'cie. Pozwalają one na zaczepienie
się w pewnym momencie w czasie na jakimś etapie, w którym
żyje sobie klasa, w którym żyje sobie komponent i jedną na przykład takich
metod jest component DidMount, która wywołuje się zaraz po tym jak nasz
komponent zostanie zamontowany, inna to na przykład component did update,
która polega na tym, że jak sama nazwa wskazuje, jeśli
coś się znajduje w naszym komponencie, na przykład wywołamy set state albo
dostanie jakiś nowy props, wtedy możemy też sobie zaczepić o to i
komponentów will unmount stosujemy właściwie tylko wtedy kiedy
mamy na przykład jakiś event listener podpięty do naszego komponentu
i chcemy go odmontować żeby zapobiec tak zwanym memory leaks,
więc to stosuje się dość rzadko niemniej warto o tym pamiętać,
te dwie i tak sobie na razie pominiemy potrzebujemy tylko tej. Chodzi
o to, że w momencie kiedy jest zamontuje się nasz komponent kiedy on się włączy
to musimy sprawdzić Hej słuchaj jaki ty jesteś Page
Type, Sprawdź sobie ten props match i dopasuj swój page type
do tego gdzie obecnie się znajdujesz, więc teraz wywołamy
sobie tę metodę componentdidmount i w niej stworzymy sobie switch statement,
który będzie przyjmował this props much
path i będziemy to porównywać do poszczególnych
route'ów, na przykład routes twitter,
mamy jeszcze notes i articles,
o każdym z nich na końcu będzie break na pewno. Musimy
wywołać metodę set state page type i teraz
w zależności od tego co tutaj
się porówna, co będzie prawdziwe to będziemy ustawiać, czyli twitters,
nodes i articles. Okej i
teraz tutaj sobie wylogowałem this state Page Type, więc zależnie
od tego co się tutaj wydarzy to to powinno się wyświetlić na stronie. Zobaczmy
notatki, mamy notes, na twitterach
mamy twitters, na artykułach mamy nodes. Dlaczego,
okej literówka, za
to kochamy JavaScript, że na mnie mówi o takich rzeczach. Mamy articles, twitters i notes,
więc teraz na tej podstawie możemy przekazywać do details
template odpowiedniego props'a będzie
to Page Type i jak już pamiętasz user page
template przyjmuje Page Type i podaje go do sidebar'a, więc teraz wystarczy,
że w naszym details
template podamy Page Type w taki
sposób i następnie w naszym
details page w tym miejscu podamy też page type
this props page type i teraz
jeśli wszystko dobrze zrobiłem to kolory powinny się zmieniać,
ale nadal tego nie robią, więc jeszcze krótkie rzucenie
okiem nasz js no i oczywiście
this state page type a nie this props. Teraz
już musi działać, super,
więc nasz sidebar zachowuje się poprawnie, pozostało
teraz ostylować właśnie wykorzystując to renderowanie warunkowe, zwłaszcza
ten state tutaj, który sobie ustawił, ustawiliśmy. Jak będzie wyglądała
poszczególna notatka. Przypominam,
że mamy notatki zwykłe mamy
twitter'y i mamy jeszcze artykuły. Wszystkie
z tych rzeczy znajdziesz w design'ach załączonych do tego kursu, więc
teraz możesz sobie odpalić własne Adobe XD albo po prostu statyczne
pliki i podejrzeć jak to wszystko działa i ostylować to wszystko samodzielnie,
a my widzimy się w kolejnej części kursu gdzie będziemy zajmować się redux'em.
Oczywiście pamiętaj, że jeśli utkniesz na jakimkolwiek momencie ze
stylowaniem tych komponentów tego widoku to zawsze możesz zobaczyć po prostu kod``
następnej lekcji i tamto wszystko będzie czekać gotowe rozwiązane,
także zapraszam, jeśli masz jakieś wątpliwości, jeśli nie wiesz jak coś zrobić. Natomiast zachęcam
do tego, żeby zrobić to samodzielnie, ponieważ właśnie tego typu praca tego typu
jakby pchanie się trochę na głęboką wodę to jest najlepsza opcja, żeby nauczyć
się React'a dlatego zostawiłem kilka takich miejsc w tym kursie, które
właśnie pozwalają ci na dość sporo samodzielność.