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 natknęliśmy się na kilka błędów, które musieliśmy debugować
i okazało się to nie do końca przyjemne, ponieważ musieliśmy korzystać z kilku console log'ów
i po prostu domyślać się co tam się dzieje. Przy okazji akurat w
tym kodzie, który miałem obecnie w tamtej lekcji okazało się, że niektóre
props'y były źle podane przez co mieliśmy turbo dużo
błędów, tak jak teraz. Przy okazji dodałem tutaj taki prop type,
którego jeszcze możesz nie znać, nazywa się shape, tylko zapomniałem o jednej rzeczy, twitters to
jest tablica, która składa się z takich obiektów, które zawierają dopiero
te klucze, więc musimy tutaj dodać jeszcze prop types array of i
takim właśnie prop type'em określamy konkretnie
jak ma wyglądać obiekt, który znajduje się w tablicy twitters. To jest o tyle
fajne, że unikamy właśnie wielu błędów albo mamy ich zbyt wiele. Jeśli na
przykład źle podajemy niektóre props'y. No, ale lepiej w tę stronę niż jeśli mielibyśmy
nie wiedzieć o jakimś błędzie, który gdzieś tam w naszej aplikacji się pojawił. Generalnie
jeśli zauważysz gdzieś podczas tworzenia tej aplikacji, że pojawił się błąd związany
z prop type'ami, to wiedz że poprawianie prop types'ów to jest chleb powszedni i
po prostu trzeba się tym zająć, żeby był zawsze porządek. One mają nam
pomagać, nie przeszkadzać. No, ale są takie momenty kiedy po prostu musimy
zrobić z nimi to co trzeba, więc jeśli widzisz jakiś błąd to śmiało możesz
go naprawić, to też jest praktyka. Pozwoli ci to lepiej zrozumieć jak działają
props'y w React'cie, a teraz już dosyć gadania i zainstalujemy dwa pluginy
do naszej przeglądarki, które bardzo pomogą nam w debugowaniu naszej aplikacji. Pierwsze
to React Dev Tools, możemy to pobrać z Chrome Web Store. Jeśli
używasz innej przeglądarki, to śmiało sprawdź, powinien
ten plugin być dostępny na wszystkie współczesne przeglądarki. Dodajemy
sobie to do Chrome'a i zanim pokażę
ci jak to wszystko działa to zainstalujemy sobie jeszcze drugi plugin od razu relax
devtools. Również
bardzo przydatny plugin, który pozwala nam lepiej zrozumieć jak działa nasz stoee
i kiedy wrócimy sobie do naszej aplikacji to zauważymy,
że nasz plugin zapalił się na czerwono. Mówi, że używamy Development
Build of React, czyli właśnie tego którego potrzebujemy, ponieważ to on ma dostęp
do rzeczy, które są w naszej zakładce React, to ona się pojawiła
tutaj w naszym panelu devtools'owym. Jeśli
sobie otworzymy ten panel, to zauważymy, że mamy tutaj dostęp
do root'a, do providera, do browser router'a. Generalnie
do wszystkich komponentów, które pojawiły się w naszej aplikacji i co
lepsze, mamy dostęp na przykład do props'ów, które są podawane do tych komponentów,
więc na przykład jeśli otworzymy sobie nasz button. On jest opleciony component
link, który zawiera a i możesz
zauważyć, że nasze komponenty oplecione są w
Context Consumer. To jest związane z tym, że podajemy theme provider przez
nasze styled-components, więc mamy dostęp do wszystkich tych rzeczy, które w theme'ie są
podane, więc ten Context Consumer możemy ignorować jeśli chodzi o props'y,
które są na niego podawane. Natomiast to co nas interesuje, to właśnie wszystko w tych tagach. To
czego nie ma zakładka elements, a to czym dysponuje React, to
właśnie bardzo czytelny dostęp do props'ów, które są podawane do komponentów,
więc na przykład jeśli chcemy sprawdzić co jest podawane do naszego
widoku twitters, to wystarczy, że znajdziemy sobie component twitters tutaj
w tym drzewku. Wiem, że ona jest dość mocno zagnieżdżone, no,
ale trzeba nauczyć się z niego korzystać po prostu. Możemy też znaleźć je
w taki sposób, podając tutaj nazwę i wtedy trochę łatwiej jest
nam znaleźć ten komponent, bez konieczności zagnieżdżenia się w 10 000
różnych node'ów, więc jeśli teraz sobie zobaczymy tutaj na props'y
to możemy zobaczyć, że podajemy tutaj twitters, które
zawierają nasze notatki i w ten sposób
jesteśmy dużo łatwiej w stanie debugować nasze aplikacje bez
korzystania z console logów w każdym momencie, ponieważ zamiast logować, to bez
sensu do naszej konsoli, możemy po prostu odpalić sobie react devtools. Zobaczyć,
co mamy w środku u danego komponentu i po prostu łatwiej to zmieniać. Poza
tym to, co jest jeszcze fajne to to, że możemy tutaj edytować bezpośrednio
nasze props'y, więc jeśli tutaj wpisze na przykład Hello Kitty, to
będzie to miało odzwierciedlenie w naszej aplikacji, oczywiście do momentu kiedy nie
odświeżymy sobie naszej aplikacji. Na
pewno jeszcze raz zajrzymy tutaj do tej zakładki, w trakcie budowania
naszej aplikacji, a jeśli chodzi o redux devtools, to
musimy je dodatkowo skonfigurować. Tutaj mamy link do instrukcji jak sobie wejdziemy, to
zobaczymy co musimy zrobić. W naszej funkcji creator store musimy dodać
taki drugi argument, który
pozwoli devtools'om na dostęp do naszego store'a, więc teraz tutaj
mamy create store. Podajemy redecer, jego nazwy nie
zmieniamy i po przecinku podajemy ten komentarz razem
z tą długą nazwą. Tu
gdzie jeszcze jeden plus niepotrzebny i nasz ESlint ma do nas pretensje,
że używamy podkreślników i tutaj nawet autorzy to przewidzieli,
po prostu musimy wyłączyć na chwilę ESlinta, możemy skopiować
sobie nawet te komentarze, te komendy po prostu wyłączają z ESlint'a
w danym fragmencie kodu. To jest akurat wyjątek, na który możemy sobie
pozwolić. Tu mamy jeszcze jeden problem, ESlint nie wie czym
jest window, więc teraz szybciutko to naprawimy. To jest bardzo proste, musimy tutaj obok
document dodać kolejny global i jest to window. Jest
to po prostu kolejna zmienna globalna, z której korzystamy w naszym projekcie i teraz
window nam zniknęło, więc to akurat było proste. Wrócimy sobie do naszego, okej
i mamy tutaj już nasz store i teraz
redux devtools będzie naprawdę świetnym narzędziem, kiedy będziemy
wykonywać jakieś akcje na naszym storze. Natomiast teraz jedyne
co możemy zrobić to podejrzeć sobie aktualny stan naszego store'a i
mamy takie na przykład fajne grafy, które nam pokazują jakie
elementy mamy w jakim obiekcie w naszym storze, mamy też
drzewko, możemy sobie to rozwinąć, generalnie jest to naprawdę świetny plugin. Bardzo
nam ułatwi życie jeśli chodzi o trakowanie tego, co będzie się działo po
kolei w naszym storze, więc to na tyle jeśli chodzi o konfigurację naszych narzędzi deweloperskich
i widzimy się w następnej lekcji.