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 poprzedniej lekcji udało nam się stworzyć podstawowy komponent
karty, który dodatkowo jest jeszcze molekułą, więc takim
komponentem, który zawiera kilka atomów. Natomiast
teraz zajmiemy się dalszym rozwojem naszego komponentu, ponieważ tak jak już
mówiłem w poprzedniej lekcji na końcu mamy go aż trzy rodzaje. Mamy taką zwykłą
notatkę mamy twittera i mamy artykuł i każdy
z nich wygląda trochę inaczej, właściwie różnią się tylko tym detalem tutaj w tym miejscu, więc
ostylowanie tego nie będzie takie kłopotliwe, natomiast mamy jeszcze oczywiście trzy
kolory i tym też się musimy zająć w tej lekcji, więc może zacznijmy właśnie
od tego koloru, bo to będzie całkiem ciekawe doświadczenie. Pierwsze
co przychodzi mi do głowy kiedy myślę jak mógłbym rozwiązać ten problem, nie
gwarantuję, że on będzie działał to zmiana tutaj jednej rzeczy. Oczywiście,
pierwsze co zrobimy to nazwiemy tego props'a trochę inaczej, bo okazuje
się, że nie będzie to tylko yellow. Będzie to jeszcze green i blue. Natomiast
moglibyśmy to rozwiązać w inny sposób. Zamiast podawania tutaj yellow,
który jest boolean'em w tym, w tej chwili. Możemy podawać coś
na zasadzie Active Color i wtedy nie będzie
to boolean, tylko będzie to props,
który zostanie podany tutaj do tego komponentu i teraz
jeśli sprawimy, że ten Active Color będzie albo primary albo secondary
albo tertiary, to w tym momencie możemy sobie wykorzystać
taką notację pozyskiwania rzeczy z obiektu i uzyskamy
taki efekt, że jeśli ten próg zostanie podany to wyciągniemy sobie odpowiedni
kolor z naszego theme. Jeśli natomiast nie podamy nic, to nadal będzie biały i w
tym momencie jeśli sobie przejdziemy do naszego story. Podane
tutaj Active Color primary, to
faktycznie będzie to żółty, zrobimy sobie jeszcze dwa inne story.
Jeśli sobie dodamy jeszcze inne nazwy do tego, czyli tutaj primary, secondary,
tertiary to
faktycznie nasze karty wyglądają już lepiej, ale
nie ukrywam, że trochę tutaj specjalnie idę w złą stronę, bo chcę pokazać, że
możemy się dość mocno zakopać w tych props'ach, jeśli faktycznie zrobimy
tak że każdy props dotyczy innej jakieś rzeczy związanych
z naszym komponentem i tutaj mamy Active Color, ale dodatkowo jak sobie zerkniemy,
to mamy jeszcze tutaj zdjęcie, tutaj link, więc teoretycznie powinniśmy zawierać
jakiegoś jednego props'a, który nam deklaruje czy ta karta jest
dla twitter'ów, dla artykułów czy dla notatek i dlatego teraz
pozbędziemy się tego props'a. Jak sobie wrócimy do naszego komponentu
karty to moim zdaniem powinniśmy to nazwać
Card Type i teraz Card Type
to będzie taki props, który jest niewymagany. Zaimportujemy sobie prop
types. Działać
to będzie w ten sposób, oczywiście
zmiennej Card Type jeszcze nie mamy, możemy ją sobie teraz stworzyć w tym komponencie
i ona będzie zawierać faktycznie trzy
rzeczy, robimy
to dlatego, żeby zapobiec jakimkolwiek błędem związanym z
literówkami, ponieważ jeśli mamy tutaj to w stringach, no to, po prostu literówki
aż proszą się o to żebyś gdzieś się pojawić w naszej aplikacji, jak jeśli stworzymy
sobie taki obiekt, to jesteśmy pewni, że nigdzie się nie pomylimy, bo jakakolwiek pomyłka
związana z nazwą albo zmiennej albo klucza będzie
po prostu od razu karana błędem i to jest sposób na to żeby weryfikować
czy prop types jest dobrze napisany, ale wydaje mi się, że jest jeszcze jeden fajniejszy
sposób i nazywa się to one of i teraz moglibyśmy
faktycznie sobie zostawić tę zmienną, tak robiliśmy w poprzednim kursie. Właściwie
to nie jest zmienna tylko const, ale możemy też zrobić coś takiego i
to
również będzie poprawne, więc to jest taki nowy sposób, który sobie tutaj zostawimy
on nam weryfikuje czy podajemy props'a jako note, twitter albo article
z tym, że note nie musimy podawać, bo note, to jest ta domyślna wartość, która
będzie przypisywana automatycznie, jeśli tego props'a do komponentu nie podamy. Okej,
skoro już to zrobiliśmy, to teraz możemy wrócić do kwestii kolorów. Tutaj mamy
ten Active Color i moim zdaniem to nadal jest dobry pomysł żeby
pobierać sobie ten kolor w sposób taki dynamiczny właśnie wyciągając
ten klucz na podstawie props'a, który podaliśmy. Z tym, że nasz theme, jeśli
sobie zobaczymy, zawiera te nazwy nieco inne, bo mamy na razie ten primary, secondary i tak
dalej, ale jeśli się nad tym dobrze zastanowimy to tak naprawdę te kolory są
powiązane bezpośrednio właśnie z tymi funkcjami naszej
aplikacji, czyli z tymi nawet obszarami, którymi będziemy się zajmować. Jeśli tutaj damy
sobie note, tutaj twitter, a tutaj article, to
teoretycznie nic złego się nie stanie, bo to nadal będzie powiązane
właśnie z tymi obszarami, którymi będziemy się zajmować w naszej aplikacji. Tutaj
ten Active Color sobie zostawimy i po prostu podamy
to w taki sposób, że Active Color to będzie tak naprawdę
nasz card type i dodamy
sobie do naszych starych Card Type, to
tu powinno działać. Ten note możemy sobie wywalić, bo oczywiście on jest Default'owy, więc
zwykła karta bez props'a. To będzie notatka
i nasze kolory działają, więc wszystko
jest tak jak należy, możemy też sobie spróbować podać jakiś props, który
będzie niepoprawny i teraz powinniśmy mieć błąd i faktycznie
tak jest failed prop type invalid card type i nawet mówi nam
że podaliśmy tutaj roman, a powinno być albo note albo twitter albo article,
więc to jest super, że mamy taką weryfikację tych props'ów, biorąc
pod uwagę, że zmieniłem tutaj nazwy kolorów, to musimy jeszcze zerknąć
na pozostałe komponenty, bo wydaje mi się, że button też miał tak, oczywiście
ta logika związana tutaj z button'ami też się zmieni, okej i
button to był chyba nasz jednyny komponent, który był jakkolwiek kolorowy. Mamy
jeszcze yellow background, który mamy w naszym button icon w stories. Okej, sprawdźmy
tylko czy to wszystko działa na pewno. Kolory działają, w porządku,
więc jesteśmy na dobrej drodze, żeby ukończyć nasz komponent card. Zostały
nam jeszcze tylko te dwa detale, zdjęcie i link.