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 mamy do omówienia ciekawy przypadek, ponieważ musimy stworzyć komponent,
który jest button'em z ikoną wewnątrz i zrobimy to nieco inaczej niż zrobilibyśmy
to w takim czystym CSS'ie, dlatego będzie to bardzo ciekawe i taki właśnie fajny
przypadek, jak można to rozwiązać przy korzystaniu ze styled-components,
żeby było nam łatwiej to w tej lekcji podzielimy sobie ekran. W ten sposób
będę mógł podglądać co tutaj się dzieje. Jak
wyglądają dokładnie te button'y. Mamy tutaj komponent
button icon, który już jest przygotowany i mamy też nowe pliki z
ikonami. Przeniosłem je wszystkie do folderu items i teraz to co możemy
zrobić tutaj, to taki mały eksperyment, ponieważ chciałbym żeby ikona
była podawana jako props do tego button'a, czyli będziemy mieć zwykły
styled-component, zaimportujemy sobie style, stworzymy
sobie const'a button icon, który
będzie oczywiście button'em, wyeksportujemy
go i teraz tylko tak na szybko go sobie ostylujemy on ma 67
wysokości i szerokości,
border radius ustawimy na 20, tło
naszego button'a jest przezroczyste chyba, że jest aktywny, wtedy staje
się białe, więc musimy zrobić te dwie rzeczy. Na
razie zajmiemy się tylko tym obrazkiem, czyli ikoną naszą. Ona będzie w URL
i tutaj będziemy podawać to jak na przykład props'a
item, wtedy jeśli ten item zostanie podany
to zostanie właśnie przedstawiony w tym obrazku. Oczywiście jeszcze musimy ustawić no-repeat
position i
myślę, że tak na oko to będzie gdzieś 40% musimy
jeszcze wywalić border, ponieważ włączy nam się ten domyślny, okej i
teraz stwórzmy sobie dla naszego button icon story, żebyśmy
mogli podglądać jak to wygląda. Oczywiście
zawartość naszego button'a wywalamy, zamykamy tylko, ponieważ nasz
button nie ma żadnego tekstu i spróbujmy sobie teraz zaimportować
tutaj jakąś ikonę, na przykład bulb, czyli
żarówka, bulb icon i teraz
to, co chcemy zrobić to chcemy podać te ikonę jako props do naszego styled-component'u.
Nasz storybook działa,
teraz sprawdzimy czy on to zbudował. Okej,
mamy tutaj komponent button icon i faktycznie mamy
naszą żarówę. Teraz co możemy zrobić żeby zasymulować takie
żółte tło. No bo jeśli nasz storybook ma służyć jako taka dokumentacja i mamy
sobie podglądać to jak nasze komponenty się zachowują w środowisku
zbliżonym do tego, które znajdziemy w aplikacji, a jednak trochę odseparowanym. No to akurat
w przypadku tego button'a, który ma białe tło musimy dodać żółte
tło dla naszego background'u, żeby po prostu widzieć, że ten button jest aktywny
albo nieaktywny inaczej tego nie zobaczymy, więc to co możemy
zrobić to na przykład stworzyć sobie tutaj taki wrapper, który będzie
po prostu miał żółte tło i z racji, że używamy tutaj zwykłego JSX'a
w naszych stories, to możemy zaimportować też style w
to miejsce i stworzyć sobie zwykły styled-component, który
na przykład nazwiemy yellow background. Sprawimy, żeby
ten button, który będzie wyświetlany w nim był na środku. Okej,
a przy okazji dodamy sobie jeszcze pozostałe ikony, które nam zostały tutaj
w naszym folderze. Okej
skoro zaimportowaliśmy wszystkie to teraz możemy sobie dodać po
kolei. Okej,
mamy już nasze ikony stworzone w naszych stories. Podejrzymy sobie
tylko czy one faktycznie się pojawiają, wszystko się zgadza i teraz
co możemy zrobić z tym żółtym tłem, oczywiście
moglibyśmy zrobić coś takiego, że przed każdym naszym story
wrzucamy yellow background w
taki sposób, teraz jak sobie wejdziemy do pierwszego, ach nie
dodałem koloru. Okej to
teraz nasza ikona faktycznie wygląda tak jak w naszych design'ach tylko, że
problem polega na tym, że teraz przed każdym
story musiałbym dodawać i zamykać ten
background, czyli mielibyśmy pięć razy to samo i na szczęście już
raz to wykorzystałem w naszym config'u, tutaj w storybook'u. Możemy
zaimportować sobie addDecorator, który przyjmuje jako parametr story, oplata to story
w co tam chcemy i wrzucamy to story tutaj w taki sposób, więc
teraz zrobimy to samo tutaj w praktyce. To sobie na razie trochę odsuniemy
i musimy tutaj wykorzystać właśnie tę metodę addDecorator i on
działa w taki sposób, że wykonuje to co chcemy przed każdym story. Musimy
tutaj podać story i tu
niech nam zwróci coś takiego i teraz jeśli
to dobrze zrobiłem to przed każdym naszym story właśnie zostanie dodany
to yellow background i teraz każdy story z automatu będzie już miał to
żółte tło i tak się właśnie stało. Super
teraz przejdźmy sobie jeszcze na chwilę do naszego komponentu, to
na razie możemy sobie zamknąć teraz podzielimy ekran z naszą przeglądarką, ponieważ
w naszych design'ach jest tak, że jeśli button jest nieaktywny to ma przezroczyste tło. Tu
możemy zrobić coś takiego i teraz w momencie kiedy nasz
baton jest aktywny dopiero wtedy dostanie tło białe. W
naszym przypadku możemy zrobić to w ten
sposób, że podamy po prostu props'a Active, jeśli
Active będzie, wtedy podajemy White,
a jeśli Active jest
false wtedy podajemy transparent i teraz jeśli sobie przejdziemy
do naszego story i stworzymy na
przykład Active, dodamy tutaj po prostu
props'a Active, to
widzimy, że białe tło się pojawia. Okej, to na tej lekcji przygotowaliśmy
sobie fajny, prosty komponencik button icon, który przyjmuje icon
jako props'a i zmienia kolor tła kiedy podajemy mu props'a Active.