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 zaczęliśmy sobie refactoring naszej aplikacji. Mam
nadzieję, że tobie poszedł równie szybko jak mi, bo mi zajęło to z zegarkiem w ręku jakieś
3 minuty i to jest właśnie fajne w React'ie, że nawet jak wpadniemy na pomysł
jakiegoś refaktoringu, to zazwyczaj zmiany wprowadzone do naszej aplikacji zajmują
bardzo mało czasu. Właściwie naniesienie tych zmian, więc w każdym
komponencie już teraz mamy page context, nie podajemy nigdzie
tego props'a Page Type. Jedyny komponent, w którym, który
mógł ci sprawić, jedyny komponent, który mógł ci sprawić
problem to card js, bo tutaj była taka tricky rzecz, ponieważ mieliśmy
tutaj już Connect, który podaję na mapDispatchToProps, ale musieliśmy jeszcze opleść nasz
komponent w nasz Higher Order Component i okazuje
się, że jest to bardzo proste, po prostu trzeba było ten with context wrzucić tutaj w ten
nawias i opleść po prostu nasz card, wynika to z tego, że Connect podaje props'y
do naszego komponentu, a nasz Higher Order Component to props'y przecież przekazu normalnie
sposób tutaj z tej funkcji, te props'y idą tutaj, więc cokolwiek jako props
zostanie podane do naszego komponentu, to mamy pewność, że to również zostanie przekazane
ostatecznie i skoro to wszystko już mamy zrobione to
teraz po usuwaniu notatek wypadałoby dodać w końcu mechanizm, który pozwoli
nam nie dodawać i z racji, że mamy już tutaj ten context, który
nam gwarantuje to, że możemy sobie czerpać z dowolnego miejsca w naszej aplikacji
informacje o tym w którym miejscu się znajdujemy to moim zdaniem powinniśmy
to zrobić w grid-template ponieważ jak sobie zerkniemy na nasze design'y
to właśnie tutaj po prawej stronie mamy guzik, który nam odpala nasze dodawanie. On
wygląda w ten sposób, nie zajmiemy się w tej lekcji stylowaniem, zrobimy coś bardzo podstawowego.
Natomiast jeśli masz ochotę to ostylować to później zostawię to dla ciebie, a
od następnej lekcji, to już będzie wyglądało dokładnie tak jak tutaj zaprojektowane,
więc teraz przejdźmy sobie do naszej aplikacji i spróbujmy to stworzyć,
żeby zaoszczędzić tam trochę czasu możemy sobie skorzystać
z gotowego komponentu, który mamy już w atomach. Nazywa się button icon, więc
teraz go sobie zaimportujemy i dodatkowo
zaimportujemy sobie od razu ikonę plus, którą mamy w asset'ach. Podałem
jeszcze złą ścieżkę, atoms, dobra
i teraz to, co chcemy zrobić, to napisać
style tego button icon, żeby on był okrągły i żeby miał taki kolor
tła jaki chcemy, więc możemy sobie stworzyć styled button icon. Wrzucić
tu nasz buttoniIcon i w nim stworzymy sobie background color,
page context
i theme jeszcze musimy
wyciągnąć, żeby
może trzymać się tej konwencji nazewniczej w naszych button'ach
to tam było active color theme, okej. Zrobimy
też żeby był w 100% okrągły i teraz
spróbujmy go sobie zaimplementować. Aha, jeszcze jedno, on
musi mieć position fixed, ponieważ musi być zawsze przez
scroll'u nawet w tym samym miejscu i to będzie gdzieś od
dołu 40, od prawej 40 pikseli. Dobra,
spróbujemy go sobie tutaj wrzucić. Musimy jeszcze mu
podać active color, żeby
nasz button znajdował się w tym miejscu. Upewnij się, że nasz styled wrapper ma position
relative, bo może u ciebie w kodzie tego jeszcze nie być i wtedy
dopiero jeśli rodzic jest relatywny, to dziecko może się pozycjonować albo na
fixed albo absolutnie, ale względem właśnie tego rodzica. Ja
bym tutaj jeszcze trochę zmniejszył, bo background size. Zobaczymy
do 40% jak to będzie wyglądać, może nawet 35,
żeby ta ikona była nieco bardziej subtelna, okej i tym
sposobem mamy nasz button gotowy. Teraz wystarczy, że stworzymy sobie z tego komponentu
klasę i stworzymy logikę, która będzie pozwalać tam na pokazywanie albo ukrywanie
naszego komponentu do dodawania nowych elementów
w naszej aplikacji. Ten komponent
możemy sobie stworzyć wydaje mi się, że w organizmach, bo to będzie taki właśnie standalone
komponent. Nazwiemy go new item bar. W
nim stworzymy
sobie new item bar js i zaczniemy
go pisać, okej. Widzimy,
że nasz komponent pojawił się tutaj na stronie, więc teraz możemy sobie do niego wrócić, jeszcze
go trochę ostylować. Pierwsze, co chcemy zrobić na pewno, to zmienić
nieco wygląd naszego text area, ale może najpierw stwórzmy
sobie jakiś wrapper, który nam to faktycznie ustawi po prawej stronie. Dobra,
teraz sprawimy, żeby to było na flex'ie i zaimportujemy
sobie with context z naszego Higher Order Component żeby
nasz baton mógł wiedzieć gdzie się znajduje. Okej,
teraz zajmiemy się tym text area i zamiast tworzyć nowy komponent
text area, to zrobimy sobie coś takiego, że ostylujemy sobie po prostu nasz
input i użyjemy props'a has żeby to się wyrenderowało
jako text area. W ten sposób praktycznie
nic tu nie musimy zmienić, może trochę zmienimy border radius na nieco mniejsze,
bo na razie jest zbyt okrągłe i tu dodamy sobie jeszcze heading,
okej. W
ten sposób stworzyliśmy sobie nasz taki podstawowy komponent, który będzie się pokazywał, żebyśmy
mogli dodawać nasze notatki. W następnej lekcji zajmiemy się
renderowaniem warunkowym, wewnątrz niego oraz ukrywaniem i pokazywaniem go.