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ść, skoro komponent karty już mamy za sobą to teraz możemy przejść do tworzenia
kolejnego dość poważnego komponentu w naszej aplikacji, a mianowicie do sidebar'a. Sidebar
jest o tyle ciekawym komponentem, że zawsze znajduje się w tym samym miejscu, ma taką samą szerokość
i wysokość i takie same elementy. Jedyne co się będzie zmieniać
to jego kolor w trakcie tak jak będziemy nawigować po naszej aplikacji, więc
teraz sobie do tego przejdziemy już teraz widzimy, że będzie on się składał z logo, trzech
ikon nawigacyjnych i ikony do wylogowania, później
sobie przejdziemy do tego ekranu, w którym będziemy się logować lub rejestrować,
ale to w dalszej części rozwoju naszej aplikacji na razie tym się
zupełnie nie przejmujemy, więc i ta ikona ten link będzie póki
co nieaktywny. Zanim jednak przejdziemy do
tworzenia naszego komponentu musimy zrobić mały porządek w naszym widoku root'owym,
bo w tym w tej chwili, bo
w tej chwili jeśli zaczniemy sobie tutaj jeszcze wrzucać router to będzie tego naprawdę
sporo i zrobi nam się mały śmietnik, więc nie bez powodu tutaj
pojawił się folder templates, do którego teraz wrzucimy
sobie pierwszy template, który będzie właściwie jednym z
głównych, a może i jedynym zobaczymy który będzie zawierał właśnie
całą naszą struktura aplikacji, czyli ten sidebar, później jeszcze model
do dodawania notatek i tak dalej, więc teraz stwórzmy sobie po prostu tutaj main
template, możemy
sobie skopiować zawartość naszego root'owego widoku, ponieważ to
co się zmieni to children,
który wrzucimy tutaj w to miejsce. Zmienimy
też nazwę, żeby
wyrzucić niepotrzebne importy i tutaj
dostajemy ostrzeżenie, że children nie jest weryfikowane przez prop types,
więc sobie to szybko naprawimy i z
racji, że children jest dość specyficznym elementem, właściwie props'em
to to co możemy zrobić to dodać tutaj prop type, który się nazywa element
i mówić że on jest potrzebny, on jest wymagany i w ten sposób właśnie
tym elementem będzie coś co jest podawane tutaj w tym
miejscu, to będzie tylko jedno dziecko, to znaczy, że
nawet jeśli będziemy wrzucać tutaj kilka rzeczy to musimy je opleść we
fragment, czyli w te puste tagi, w taki sposób i
dzięki temu ten protect nam będzie to przepuszczał, więc teraz
wróćmy sobie naszego root'owego widoku na szybko, wywalę theme provider
global style theme, zaimportujemy
sobie main template i tak jak mówiłem możemy
to wrzucić w taki sposób, teoretycznie nasza
aplikacja w tym momencie powinna działać, okej,
nasza aplikacja się włącza i wszystko wygląda na to, że jest w porządku. Style się
włączają tak jak powinny, więc mamy tutaj trochę większy porządek teraz
z naszym root'owym widoku i możemy przejść do implementowania React Router'a,
który pozwoli nam na stworzenie sidebar'a, więc pierwsze co będziemy potrzebować do tego
żeby nasz sidebar działał to React Router DOM. Możemy
go teraz sobie zainstalować. Okej,
skoro nasza paczka została zainstalowane to teraz możemy sobie wyciągnąć
z tej paczki coś co będzie na pewno potrzebne,
czyli browser router jest to jeden z router'ów dostępnych właśnie
w React Router DOM, podamy
teraz nasz browser router jako dziecko naszego main template i to tutaj
właśnie będą się znajdować wszystkie nasze ścieżki, czyli
notes twitters i articles. Za
chwilkę sobie przejdziemy do implementacji tego, ale żeby to zrobić
to musimy mieć gotowe te widoki dlatego teraz sobie w naszym folderze views stworzymy
jeszcze te trzy pozostałe widoki, wydaje mi się że na razie nie musimy
zagnieżdżać każdego widoku w folderze o tej samej nazwie. Mam
wrażenie, że nasza aplikacja nie ulegnie aż takiemu rozrostowi, żeby było to konieczne,
ponieważ w tych folderach zazwyczaj znajdują się jakieś dodatkowe pliki związane
z konkretnym widokiem, na przykład związane ze stylami albo
z jakimiś dodatkowymi rzeczami. Natomiast tutaj raczej te widoki nie będą aż tak skomplikowane, więc
zrobimy sobie jeszcze twitters, notes
i articles. Na
razie to tyle. Teraz stwórzmy sobie takie podstawowe widoki i
zaimportujemy
je sobie teraz do naszego rootowego widoku, mimo
że znajdują się w tym samym folderze to wydaje mi się, że możemy tutaj utrzymać tę konwencję
importów absolutnych, w naszym
index js musimy jeszcze poprawić tutaj ten import, ponieważ
wywaliliśmy foldery root, żeby to się nie przestało ładować i
teraz z naszego React Route'a musimy
zaimportować sobie jeszcze dwa komponenty switch i route i teraz
jeszcze takie małe pod przypomnienie z poprzedniego kursu, komponent switch pozwala nam
na wyświetlanie tych route'ów, które spełniają props'a path,
to znaczy, że jeśli mamy props'a path z taką ścieżkę i
on ma wyświetlać komponent, który
się nazywa nodes, ponieważ to będzie nasz główny komponent, nasz domyślny, który właśnie
będzie takim domowym komponentem, to
jeśli wejdziemy sobie na adres nasza apka, bez
żadnego po ukośniku adresu, to wejdziemy właśnie w tą notes pod
warunkiem, że dodamy tutaj exact z tego względu, że mamy jeszcze tutaj articles
i twitters i teraz
ten adres i ten adres zawierają
slash, czyli teoretycznie zawierają ten adres, więc
ten props exact pozwala nam na to, że wyłącznie jeśli
taki adres jest wpisany to ten komponent się wyświetli. Jeśli
by tego exact nie było to adresy articles i twitters
wyświetlały by również ten komponent nodes, okej i
teraz jeśli przejdziemy sobie na naszej aplikacji to
widzimy, że jesteśmy na notes view, bo jesteśmy na tym adresie domowym, jak sobie
wpiszemy articles, to jesteśmy na articles. Jak wpiszemy sobie twitters, to
jesteśmy na twitters i to na tyle w tej lekcji, a w następnej
zajmiemy się już tworzeniem naszego sidebar'a, który pozwoli nam na nawigowanie
pomiędzy tymi widokami.