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 zajmiemy się przechodzeniem z widoku takiego ogólnego,
gdzie mamy kilka notatek do szczegółów notatki. Jak sobie zerkniemy
nad naszym design'em to to wygląda mniej więcej tak, więc
teraz po kliknięciu w naszym notatkę chcemy żeby odpalił się właśnie ten widok
i możemy to zrobić za pomocą dynamicznych ścieżek podawanych do naszego React Router'a,zajmijmy
się teraz przygotowaniem tego wszystkiego. Pierwsze co musimy zrobić to
weź sobie do naszego root'owego. widoku wywalić tutaj ten
exact i sprawić, żeby notes stało się naszym
głównym domowym widokiem. Dlaczego tak się dzieje dlatego,
że chcemy, aby użytkownik mógł później wchodzić do
notatek w taki sposób, że na przykład jeśli poda articles slash i id
takiej notatki to on sobie do tej notatki wejdzie i żeby to zrobić to musimy
wykonać właśnie jedną bardzo ważną rzecz. Pobierzmy sobie teraz komponent redirect z naszego React Router
DOM i stwórzmy osobno ścieżkę dla ścieżki
domowej i ona zamiast wypluwać ten komponent
ma nam wyrenderować komponenty redirect, który
zaprowadzi nas do nodes. Zaraz
sprawdzimy czy to działa, jeśli teraz sobie wejdziemy w naszej aplikacji, tak
jeśli klikam na logo to jestem przekierowywany bezpośrednio
do nodes. Nie mogę wejść na adres główny, jeśli sobie to usunę nawet to od
razu wchodzę na nodes. Wywalił się tylko nasz navlink z tego względu, że on prowadzi
do głównego widoku, do domowego widoku, który
już nie odpowiada na to co podaliśmy tutaj. Okej
w ten sposób zostanie to naprawione z powrotem
link pasuje do tego za co odpowiada, więc
teraz wróćmy sobie do kodu i odpowiedzmy na pytanie co my właściwie chcemy zrobić chcemy,
żeby po kliknięciu na to odpala nam się na notatka z jakimś
adresem z jej id. Będziemy mogli ją obejrzeć będziemy mogli wrócić do
widoku wszystkich notatek, więc pierwsze co
musimy zrobić to prawdopodobnie stworzyć sobie jakieś template nazwijmy go
na razie details template, zaimportujemy
sobie React'a i skoro
detailes template już mamy gotowy to teraz możemy stworzyć sobie details page, na
którym za implementujemy nasz detail template. Na
razie wrzucimy to tylko i wyłącznie to, wrzucam
to za fragment, żeby twitter mi nie wrzucił tego do jednej linijki, bo
i tak później będę teraz rozbudowywał. Nie chcę później wszystkiego
naprawiać akurat tego feature'a prettier'a, nie za bardzo lubię
okej i skoro mamy już z wyeksportowane details page to
teraz możemy przejść sobie do rootowego widoku i pokażę ci jak działają dynamiczne route'y w React Routerze. Jedyne
co musimy zrobić, żeby zadeklarować, że ten route będzie dynamiczny to
przed kolejnym parametrem przed kolejnym elementem tutaj w
naszym adresie musimy dodać dwukropek i to jest taki wild card, to jest taki indykator
tego, że po prostu to co tutaj będziemy wpisywać będzie się zmieniać, więc
jeśli wpiszemy sobie id, to znaczy, że po slashu, po notatkach
tutaj może pojawić się cokolwiek. To może być właśnie jakaś
liczba, to może być jakiś ciąg znaków, nie wiadomo. Jedyne
co wiadomo to to, że po wpisaniu takiego adresu cokolwiek by
się tu nie znalazło, my chcemy wyświetlić details page. Podobnie
zresztą jak w przypadku artykułów i przypadku
twitter'ów i zaraz jak wrócimy sobie do naszego widoku
tutaj do naszej aplikacji to na razie nic nie możemy zrobić, ale jak wpiszę
sobie tutaj 1, to nic się nie stanie. Wynika
to z tego, że po prostu ta ścieżka również spełnia ten warunek, więc teraz musimy
przed każdym ruchem tutaj dotyczącym
tych ogólnych widoków wpisać exact. Wtedy
będzie tak, że jak piszemy sobie notatkę numer 1 to
faktycznie wyświetli nam się ta notatka. Z tym, że nie mamy
tutaj tego template'u, który potrzebujemy z naszym user page
template gdzie mamy nas sidebar, tylko teraz widzimy, że ta logika związana
z tym grid'em będzie połączona z tym sidebar'em, więc wydaje mi się że
możemy to jeszcze rozdzielić w taki sposób, że dodamy
tu jeszcze jeden template, który będzie się nazywał grid view template
albo po prostu grid-template. Skupijemy sobie user page
template tutaj w to miejsce. Podmienimy nazwę i to
co chcemy zrobić to zaimportować sobie tutaj teraz user page template,
który będzie oplatał ten komponent. Wywalimy sobie sidebar
i tutaj
wrzucimy wyłącznie children, tester komponent możemy
sobie wywalić i teraz z racji, że sidebar też przyjmuje page type
to musimy sobie wejść do grid-template i tutaj wpisać page type
i również podać tego props'a inaczej zmiana kolorów naszego
serwera by się nie udała i wydaje mi się, że tutaj już wszystko
mamy gotowe teraz przejdźmy sobie do na przykład notatek i podmień my user page
template na grid-template. Zróbmy to zresztą w każdym z tych
widoków, żebyśmy mieli pewność, że to działa, okej.
Wejdźmy do naszej aplikacji zobaczymy co tam się dzieje. Widzimy,
że mamy tutaj błąd związany ze złym dzieckiem, mamy
tutaj props'a, który nie jest zgodny z prawdą, ponieważ
to co podajmy w tym miejscu to nie jest element tylko to jest array,
ponieważ nie podajemy tutaj tablicy
z dziećmi. Dobra, teraz zobaczymy
czy kolory działają. Okej, wszystko wygląda
jakby było w porządku. Nasza
notatka nadal nie jest zrobiona, więc wejdźmy sobie teraz do templates, details
template, opleciemy to sobie user page
template, zaimportujemy oczywiście styled-component
z naszego pliku, user page
template i teraz
jak sobie zerkniemy na naszą notatkę to mamy
już sidebar. Problem jest tylko taki, że jak będziemy sobie w twitters
to również mamy żółty sidebar, wynika
to z tego, że user page template w tym miejscu nie dostaję page type, a rozwiązanie
tego problemu zajmie nam jeszcze chwilkę, więc zajmiemy się tym w następnej lekcji.