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 tej lekcji i zainstalujemy i skonfigurujemy sobie redux'a, ale
zanim to zrobimy chciałbym ci pokazać jaki progres poczyniła nasza
apka, a właściwie ja w niej poczyniłem, między naszymi działami, czyli zatrzymaliśmy
się w miejscu gdzie mieliśmy dashboard z różnymi notatkami, ale jak wchodziliśmy
do notatki to nie było nic widać i to było twoje zadanie, żeby ją ostylować.
Oczywiście, jeśli nie masz ochoty tego robić, może skopiować kod z tej lekcji,
więc teraz odpalimy sobie, więc
teraz odpalimy sobie nasz Development Server i zobaczymy
jak wygląda apka w tej chwili. Jeśli
wejdę teraz sobie w dowolną notatkę, to wygląda ona w ten sposób. Każda
notatka z naszych widoków dostosowuje się do tego co
powinna zawierać i jak powinna wyglądać. Zauważ, że twittery na przykład mają avatar, notatki mają
dodatkowy link do otwierania artykułów, a nasze notatki
są takie super proste. Oczywiście ciągle otwiera się ta sama notatka,
ponieważ jeszcze nie mamy wdrożonej logiki związanej właśnie ze store'em. Tym zajmiemy
się w tej części kursu. Natomiast te wizualną część już mamy za sobą. Teraz
pokażę ci w kodzie jak to wygląda. Pojawiły
się takie dwa duże bloki kodu, jeden to details page i
details page
to jest taki pseudo inteligentny komponent, który po prostu rozpoznaje na
jakiej ścieżce jest i na tej podstawie wie jaki Page Type przekazać
do template'u, żeby ten mógł dostosować właśnie wygląd tego co
zawiera strona. W ten sposób jeśli wejdziemy
sobie do naszego głównego root'owego widoku to zobaczymy,
że mamy tutaj jeden komponent odpowiadający za wyświetlanie
detali każdej z notatek, czy to taki zwykłej notatki czy
artykułu czy twittera. Jest to tyle fajne, że zaoszczędziliśmy trochę kodu, nie musieliśmy
pisać trzech różnych stron dla trzech różnych typów notatki. Natomiast
ten kod wymaga na pewno jeszcze kilku usprawnień, ale to
już ci pokażę w dalszej części kursu, bo chcę ci właśnie też pokazać jak możemy iterować
na tym naszym kodzie, jak możemy go ulepszyć. Na pewno to nazwałbym spaghetti
kodem, jeśli widziałbym coś takiego w Code Review. To prawdopodobnie by to nie przeszło. Na
pewno są lepsze sposoby na zrobienie tego i właśnie takie pokazywanie
często błędnych podejść jest też fajne, bo dzięki
temu możesz zrozumieć co można zrobić łatwiej, lepiej, może
nieco bardziej skutecznie. Zerknijmy sobie teraz na details
template i tutaj mamy jak zwykle sporo styled-components.
Natomiast on po prostu wyciąga sobie wszystkie props'y związane
z wyświetlaniem notatki, na podstawie Page Type ustala, co
ma wyświetlić i właściwie to jest już cała filozofia. Tak
więc wszystko co związane z wyświetlaniem notatek mamy już zrobione. Nie mamy jeszcze
modułu, który pozwala nam na dodawanie tych notatek, tutaj z prawej strony
będzie mieć taki komponent. Natomiast on się pojawi też w tym dziale, ale
za kilka lekcji. Na razie skonfigurujemy sobie naszego redux'a i pierwsze
co musimy zrobić to zainstalować w naszym projekcie redux'a
i React Redux. Okej,
mamy to już zainstalowane. Podstawy redux'a pokazałem ci już w poprzednich lekcjach. Natomiast React Redux
to jest taki łącznik między React'em a redux'em, który właśnie pozwala
nam na przykład integrację naszego store'a z komponentami, które wykorzystujemy
w React'cie, więc teraz posłużymy się trochę dokumentacją. Chcę ci też pokazać
jak możemy się po niej poruszać i dzięki niej stworzymy sobie nasz store. Pierwsze
co zrobimy to stworzymy sobie folder store, w którym
stworzymy plik index js. I teraz
jak zerkniemy sobie na naszą dokumentację, to możemy sobie skopiować
ten kod i teraz tak jak już pamiętasz, nasz Create Store
potrzebuje jednej rzeczy, a mianowicie reducer'ów i reducer'y też
stworzymy sobie w osobnym folderze. Nie zdziwi cię pewnie nazwa, my
nazwiemy go reducers. W nim stworzymy sobie indeks js,
który będzie zawierał taki tak zwany root reducer dla
naszego root reducer'a musimy stworzyć sobie jeszcze initial state, który
zostanie pobrany w momencie tej właśnie inicjalnej takiej
próby odpalenia stare'a, który, który jeszcze będzie istniał i które nie będzie miał żadnych danych,
więc teraz stworzymy sobie coś co będzie przypominało trochę nasze dummy data
i tak oczywiście później nie powinniśmy już tego robić bo store teoretycznie powinien
być pusty. Zwłaszcza jak będziemy sobie zaciągać dane z API, ale na razie
zrobimy to tylko po to, żeby móc wyświetlać po prostu jakieś elementy. Ok
i ten initial state teraz możemy sobie podać tutaj. Puścimy jakiegoś
console log'a, żeby zobaczyć co się będzie działo w momencie jak będziemy dispatch'ować jakieś
akcje i teraz przejdźmy sobie do naszego store'a. Możemy
tutaj zaimportować nasz reducer. Z racji, że jest to Export
Default to możemy zaimportować to z jakąś inną nazwą. Na przykład notes app
i podać go w tym miejscu i w
tym momencie nasz store został utworzony. W następnej
lekcji postaramy się zrobić coś, żeby zmienić jego stan albo chociaż
wyświetlić to, co w sobie zawiera.