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ść, przyszła pora na ostatni etap budowania
naszej aplikacji jeśli chodzi o łączenie backend'u z frontend'em, a mianowicie na
dodawanie notatek. Wszystko mamy już praktycznie gotowe, dodatkowo
przygotowałem tutaj strukturę funkcji add item. Wynika to z tego, że
ona jest praktycznie identyczna, jak każda inna gdzie uderzamy do axios'a. Zostawiłem
tylko te miejsca, które będą kluczowe do tego, żeby faktycznie ta funkcja
dobrze wykonała swoje zadanie i żeby dodała notatkę i do naszego
API i do naszego store'u. Jeśli sobie zerkniemy na nasz endpoint
to on tutaj przyjmuje kilka rzeczy. Przyjmuje typ przyjmuje user id i przyjmuje
cały content związany z naszą notatką, więc do user id
wykorzystałem get state, które pozwala nam na wyciągnięcie user id z naszego stora. Dodatkowa
item type jest podawany w tej funkcji i item content to jest cała reszta,
którą musimy podać. Kiedy już wyślemy taką
notatkę na nasz backend, dodajmy
sobie jeszcze jakąś inną, to w odpowiedzi czyli w response'ie dostajemy coś takiego
i to jest na nowo utworzona notatka, którą chcemy wykorzystać, żeby dodać
ją do naszego stare'a. To dlaczego potrzebujemy tej nowej notatki
z backend'u to fakt, że ona zawiera to id, po którym na przykład usuwamy czy pobieramy
konkretną notatkę, więc teraz jeśli przejdziemy sobie do naszej funkcji i na
razie sobie wylogujemy coś tutaj w tym miejscu, ale
jeszcze nie będziemy dodawać żadnej notatki, okej
i spróbujmy teraz odpalić sobie konsolę. A dodatkowo
wpiszemy sobie jakąś notatkę i
nasza
notatka zostało utworzona, po czym możemy poznać po tym, że mamy status
200 i dostaliśmy w odpowiedzi z naszego backend'u nowo
utworzoną notatkę. Teraz jak odświeżymy sobie nasz komponent,
to ta trzecia notatka zostanie zaczytana, więc ostatnie
czego nam brakuje, to właśnie wyciągnięcie sobie data, a tutaj
z tego miejsca i zdyspatch'owania tego data w
naszym payload'zie. Teraz jak wrócimy sobie do naszych reducer'ów
to mamy tutaj add item success, czyli dispatch'ujemy
dobrą akcje, jeszcze dla pewności, pamiętając błędy z poprzedniej
lekcji. Mamy dispatch add items success i wysyłamy payload data,
add item success, poprzedni
stan, dynamiczny klucz, żeby dodać notatkę do odpowiedniego miejsca. Później
mamy, później mamy poprzedni stan związany z tymi notatkami w danej
tablicy i dodajemy tutaj nową notatkę tylko nie payload item tylko payload data. W
tym momencie wszystko
powinno być podpięte już dobrze. Dodajmy
sobie na przykład sarah_edo, czyli Sarah Drasner, dodajemy
notatkę i mamy podobny przypadek jak w poprzedniej lekcji, że
nic nam się nie dodaje. Dopiero po odświeżeniu widzimy efekt, czyli coś
tutaj z tym reducer'em jest nie tak. Sprawdźmy czy podajemy do niego wszystko, co
potrzebuje, w naszym payload podajemy data, on
jeszcze potrzebuję item type, więc bez
tego ani rusz okej i
w tym momencie on dostaje i item type i data, więc powinien bez problemu dostać
się do tego miejsca i spróbujmy jeszcze raz. Roman i teraz
nasz Roman został dodany, więc to na tyle w tej części kursu. Mamy
spięty backend z frontend'em. Oczywiście tylko na stronie twitters i większość
komponentów jest uniwersalna, więc będzie to działać zarówno na articles, jak i na notes. Jednak
nie spinałem tych widoków specjalnie po to żeby dać ci możliwość do
tego żeby poćwiczyć po prostu łączenie jednego z drugim. Niech twitters
będzie dla ciebie przykładem jak powinno to wyglądać.