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 nasz sidebar już jest gotowy to teraz możemy przejść do dalszego rozwoju
naszej aplikacji i teraz stworzymy sobie ten oto tutaj widok nie
będziemy na razie przejmować się ani tym, żeby renderować różne notatki albo
żeby trzymać się w jakimś storze albo w innym miejscu, które by mogło
przechowywać informacje na ich temat, po prostu na razie wrzucimy to tak na sztywno,
żeby zająć się tą wersją wizualną, później przejdziemy
do tworzenia widoku notatki i kiedy będzie mieć jedno i drugie gotowe to wtedy zajmiemy
się już konkretnie rozwiązywaniem problemów związanych właśnie z dodawaniem notatek z
przechowywaniem ich z pobieraniem ich z backend'u i tak dalej. Przejdźmy
zatem do kodu i wejdźmy sobie
do widoku notatek, w którym będziemy chcieli renderować nasze
notatki. Pierwsze co musimy zrobić to oczywiście zaimportować card
component biorąc
pod uwagę, że on na razie nic tutaj nie przyjmuje, jeśli chodzi o treść, on te wszystkie treści ma
wbite na sztywno, to jedyne co możemy podać to card type, który
w tym przypadku będzie note. Zrobimy
sobie 6 tych notatek, jak sobie wyjdziemy na naszą aplikację
to zobaczymy, że tych notatek faktycznie zrobiło się 6 i
teraz to co musimy zrobić to sprawić, żeby one pojawiały się w gridzie,
to powinno być dość łatwe zaraz się tym zajmiemy przejdziemy sobie do
user page template, bo to ten komponent będzie odpowiedzialny
za wyświetlanie tego w taki właśnie sposób, stworzymy sobie green wrapper
i w nim za deklarujemy grid-template-columns, będziemy
mieć w sumie trzy kolumny, więc możemy wykorzystać repeat i
podać, że będzie mieć 3 równe
kolumny, oczywiście nie możemy zapomnieć o Display Grid i myślę,
że możemy jeszcze dać grid-gap o szerokości,
teraz zobaczymy jak mamy na design'ach, około
85 pikseli, oplećmy sobie teraz children
tutaj w tym miejscu i nasz
grid wygląda już trochę lepiej. Musimy jeszcze tylko uwzględnić
paddingi, które znajdują się po prawej stronie, od prawej
mamy 161, od lewej około siedemdziesięciu i teraz
brakuje jeszcze tego search'a notatek i informacji o tym ile tych notatek
jest wrzucimy to sobie do div'a, nazwiemy
to page heading albo page header właściwie
to będzie lepsza nazwa. Jest taka konwencja, że wszystkie
elementy, które znajdują się wewnątrz jakiegoś pliku,
które stylujemy custom'owo względem tego widoku,
nazywamy właśnie z początkiem style, nie
jest to coś sztywnego, jeśli nie podoba ci się ta konwencja, jeśli nie chcesz z tego korzystać, to
możesz to spokojnie pominąć. Ja po prostu tego używam, bo
jest to dla mnie wygodniejsze. To mi daje takie poczucie, że na przykład jak importuje
sobie sidebar i on nie jest ostylowany customow'o jakoś względem tego widoku, tam
nie ma tego styled na początku i teraz wrzućmy sobie ten page header
na razie nie ostylowanie w to miejsce i tu
będzie mieć input, który musimy sobie zaimportować i będziemy
też potrzebować hheading dla przypomnienia input
przyjmuje props'a search. Jeśli on jest obecny to
on wtedy zmieni trochę swój wygląd, okej.
Sprawdźmy jak to wygląda, tym się zaraz zajmiemy, żeby to
było w osobnym rzędzie zaimportujmy sobie jeszcze paragraf, który
posłuży nam tego żebyśmy mogli tutaj wrzucić liczbę notatek. Oczywiście
na razie to też wrócimy sobie na sztywno i w
sumie moglibyśmy się tutaj bawić jakieś rzędy w gridzie i tak dalej, ale wydaje
mi się że może jeszcze lepiej będzie po prostu zrobić coś takiego,
że odseparujemy sobie te logikę związaną z gridem od
naszego wrappera. Czyli nasz wrapper zostanie taki jaki jest. Zostawimy
tylko te paddingi, a grid sobie wrócimy do innego
diva i opleciemy nasze children właśnie
w tym grid, bo tylko one tak naprawdę potrzebują tego grid'a, natomiast
to co było wcześniej z styled grid wrapper zostawimy na styled wrapper.
Okej, już mamy prawie gotowe. Jeszcze
tylko jedna rzecz, odległość między tym header'em
a naszymi notatkami musi być trochę większa i odległość
pomiędzy paragrafem i heading'iem też powinna być nieco mniejsza. Możemy
to zrobić w taki sposób, że dodamy tutaj sobie margin. Powiedzmy,
że damy mu 25 pikseli i 50 pikseli
z dołu, okej. Jeszcze tylko takie kosmetyczne zmiany w
naszym inpucie placeholder search
i dodatkowo custom'owa ostyluje sobie nasz heading
paragraf, font-size
tutaj będzie taki sam, tylko font-weight nam
się zmieni, otworzymy sobie theme,
żeby podejrzeć jak to było, a tutaj
tylko deklarujemy blythe albo bold, okej i
jeszcze heading, tam jest trochę większy, ale nasz heading przyjmował props'a
bieg, więc teraz jeśli go użyjemy na naszym
heading'u w ten sposób, a dodatkowo możemy użyć tutaj props'a
as i powiedzieć że to będzie H1 semantycznie będzie to
chyba bardziej poprawne z racji, że jest to taki główny nagłówek, który mówi co
mamy tutaj wyświetlane, w ten sposób nasz
user page template jest prawie że gotowy, oczywiście na razie statyczny,
ale tym się zajmiemy w następnej lekcji.