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ść, udało nam się już wyświetlać nasze notatki w taki sposób na
dashboard'zie, udało nam się też wyświetlać notatki w detalach, więc
pozostały nam dwie rzeczy. Jedna mniejsza, a druga większa. Zacznijmy od tej mniejszej,
czyli od usuwania notatek. Mamy już gotową akcje, która
znajduje się w tym miejscu, jako
remove item. Podajmy tutaj id tej notatki, więc
praktycznie wszystko mamy gotowe, to co moglibyśmy teraz zrobić
to zaktualizować nasz reducer, żeby
to znowu zaczęło działać, ponieważ tutaj nam się id zmieniło na takie id, z podkreślnikiem i
teraz jeśli klikamy to się usuwa tylko, że nadal w naszym backend'zie siedzą
te notatki, więc co możemy zrobić, żeby móc je usunąć. Z naszej
akcji możemy stworzyć sobie remove item
request success
failure i w ten
sposób w naszym remove item przyjmujemy item type i id, a dodatkowo
jeszcze przy pomocy thunk'a sobie bierzemy dispatch. W momencie
kiedy ta akcja się odpala, dyspatch'ujemy sobie remove item request
i dodatkowo robimy strzał do axios'a. Zerkniemy
sobie, tu mamy akurat delete i podobnie jak w poprzedniej
lekcji podajemy po prostu id po slash'u, więc teraz
możemy zrobić axios delete i po slash'u dodamy
sobie tutaj id. Jeśli akcja została wykonana poprawnie możemy
wysłać do naszego reducer'a remove item success. A jeśli
coś się stało, wtedy
robimy catch i możemy sobie wylogować błąd. Wracamy
teraz do naszego reducer'a i musimy
tutaj dodać remove item request i success. Z
obsługą błędów jak zwykle nie będziemy się w tej lekcji zajmować, zostawiam to jako zadanie
domowe dla ciebie. Teraz te nasze remove items success update'ujemy
nasz state i teraz jeśli wszystko poszło dobrze, zerkniemy
sobie jeszcze na nasze devtools'y, czy nie ma żadnych błędów. Jak kliknę na remove
to powinno usunąć zarówno w naszej aplikacji, jak i w naszym backend'zie, okej
i widzimy, że jest jakiś błąd związany z tym, że item type jest nie podane. Sprawdźmy
sobie zatem czy tutaj nasz item type
jest podawany. Teraz jak sobie klikniemy to powinniśmy zobaczyć przynajmniej
początek tego co się wydarzyło. Okej, ale nic nie ma, w naszym reducerze
na razie zakomentujemy to co było zwracane i zwrócimy po prostu state, żebyśmy
mogli podejrzeć co za akcja tutaj zachodzi i widzimy,
że coś jest nie tak z naszym url'em oczywiście. Dobra
w tej chwili powinniśmy
móc usunąć te notatkę po kliknięciu na remove
i faktycznie ta notatka została
usunięta. Problem
jest tylko jeszcze taki, że i tak przechodzimy do niej po kliknięciu
na remove, ponieważ remove znajduje się w styled wrapper. Więc
zróbmy tak, że możemy przejść do natalki tylko po kliknięciu na górną część,
nie na notatkę i nie na remove. Wystarczy, że przeniesiemy to
do tego miejsca i teraz
możemy przywrócić to co mieliśmy wcześniej, czyli update,
związany z naszym state'em i w
tym momencie jeśli nacisnę remove to powinniśmy nie przejść do notatki
i usunąć notatkę, ale wygląda na to jakby item type, w ogóle nie
było podawane do naszego reducer'a i w takiej sytuacji najlepiej cofnąć
się o krok wstecz i zobaczyć co my tutaj robimy w ogóle. Wysyłamy
item request, a okej, a item success to jest ta
akcja, która obsługuje nam item type, więc tutaj musimy po prostu
zrobić item success i w tym momencie już na
pewno powinno to działać, uwaga wracamy. Roman, usuwamy cię
i Roman co prawda usunął
się, ale nie chciał zniknąć stąd, więc dodałem go jeszcze raz, bo
jak sobie wejdziemy do naszej akcji to widzimy, że tutaj zwracamy then, po
prostu return z obiektem. A my tutaj chcemy przecież dyspatch'ować
rzecz, czyli musimy wrzucić cały ten obiekt do dispatch'a i dopiero
wtedy faktycznie ta akcja zostanie zdyspatchowana. Na przyszłość, żeby
tutaj już zapobiec temu tego typu błędom również
sobie to zdyspatch'ujemy, okej i
w tym momencie jak usunę Romana to powinien zniknąć naszej listy i tak
się właśnie stało, więc udało nam się wprowadzić usuwanie naszych elementów. Została
tylko ostatnia część, dodawanie ich i to zrobimy w następnej lekcji.