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ć panel, który pozwala nam na dodawanie nowych
notatek, twitter'ów albo artykułów, ale właśnie, żeby on spełniał ten warunek, żebym
mógł dodawać jedno, drugie albo trzecie, to musimy tutaj zrobić
warunkowe renderowanie niektórych elementów, żeby po prostu wszystko
nam tutaj się zgadzało, więc pierwsze, co chcemy zrobić, to sprawdzić
jakie mamy placeholder'y tutaj w tym miejscu mamy title,
account name i title i w artykułach mamy jeszcze link
i to jest właściwie jedyna różnica, która tutaj się
pojawia jeśli chodzi o liczbę input'ów, więc możemy sobie skopiować
tutaj jedno. Stworzyć link i dodać warunek,
że jeśli Page Context to artykuł, wtedy
niech wrzuci nam tutaj jeszcze jeden input. Teraz
jak wedziemy sobie do artykułów, to faktycznie mamy nasz link. Możemy tylko dodać
sobie do naszego input tutaj jakiś się padding,
jakiś margin, więc
teraz to zrobimy, okej.
Teraz wygląda to nieco lepiej i drugą rzeczą która nam tutaj robi
różnicę jest właśnie ten placeholder w tym miejscu, tutaj musi być account
name, więc w naszym placeholderze tutaj
też możemy zrobić sobie warunek, który mówi, że jeśli page
context to twitters, wtedy
niech to będzie account name. Możemy podać nawet przykład,
jak ma to wyglądać, żeby użytkownik wiedział, że chodzi o ten, o taką nazwę
formalną z twittera, a nie ten taki tytuł, który się wyświetla, a jeśli
nie to tutaj damy po prostu title i teraz jeśli wejdziemy
sobie nad twitter'y to faktycznie mamy
nasz placeholder, więc skoro to już mamy zrobione, możemy sobie wrócić teraz do
naszego grid-template i sprawić, żeby ten sidebar pojawiał
się tylko kiedy klikniemy na nasz przycisk, więc możemy
sobie tutaj stworzyć klasę i teraz stwórzmy
sobie funkcje handle new
item bar toggle i ta funkcja będzie
miała za zadanie tylko jedną rzecz. Zwrócenie nam this set state, w
którym podamy sobie prev state i powiemy, że is new
item bar visible. Powinno być zaprzeczeniem
tego, co mieliśmy prev state, jest new item bar visible. Tutaj
takie małe przypomnienie z poprzedniego kursu, set state działa synchronicznie, więc
jeśli zmieniamy jakiś stan, a właściwie zaprzeczamy temu, który był wcześniej
albo na przykład właśnie odwołujemy się w jakiś sposób do stanu, który był wcześniej to
zawsze korzystamy z prev state, wtedy to jest taka bezpieczna kopia naszego stanu, który
był przed tym zanim wywołaliśmy nasz set state, możemy się wtedy do niego odwołać
i powiedzieć słuchaj, to co było wtedy prawdą albo fałszemm teraz ma być
odwrotnie, więc skoro to już mamy zrobione to teraz wystarczy,
że zrobimy coś takiego is visible. Wyciągniemy
sobie z naszego state'u te wartość, podamy
ją tutaj i dodatkowo nasz styled button icon on click
będzie wywoływał this handle new item
bar toggle. Jak wrócimy sobie do new item bar, który
teraz dostaje props'a is visible, to
możemy zrobić fajną rzecz z nim, a mianowicie podać go tutaj do naszego w wrappera. Domyślnie
możemy ustalić sobie, że nasz sidebar do tworzenia notatek będzie
o 100% przesunięty w prawo, więc będzie ukryty, ale
dodatkowo możemy sobie zrobić właśnie translate, tutaj otworzyć funkcję
strzałkową, wyciągnąć sobie is visible i powiedzieć słuchaj, jeśli is visible,
to prawda, wtedy niech będzie zero, a
jeśli nie prawda, to niech będzie ukryty i teraz
jak kliknę sobie na nasz button to się chowa i pojawia, to jest super. Jeszcze
możemy sobie zrobić transition i teraz powinniśmy mieć ładną animacje. Animacja
nie działa, bo, bo tutaj mamy translate, a powinno
być transform. Wydaje
mi się, że ta sekunda będzie za długa, zdecydowanie. Myślę, że ćwierć
sekundy spokojnie tu wystarczy. W porządku
i tym sposobem stworzyliśmy sobie komponent,
który pojawia się wtedy kiedy chcemy, żeby się pojawiał i wyświetla to, co chcemy żeby
wyświetlał, więc w następnej lekcji stworzymy sobie mechanizm, który pozwala
nam na dodawanie notatek. Tutaj jeszcze tylko taki mały drobny
protip, bo jak widzisz tutaj animujemy za pomocą transform, translate
i pamiętaj, że jakiekolwiek tego typu animacje zawsze
powinny się odbywać właśnie za pośrednictwem transform, translate, a nie na przykład top left
albo margin, nic w tym rodzaju, ponieważ wszystkie
inne właściwości CSS trigerują nam paint, a właściwie
repaint całego naszego layout'u i to jest jedyny sposób na
to, żeby nasze animacje były jak najbardziej płynne, jak najbardziej wydajne i
zabierały jak najmniej pamięci urządzenia, na którym pracujemy, więc najłatwiej
to wszystko zapamiętać w taki sposób, że jeśli już mamy coś animować na naszej
stronie, to najlepiej, żeby to był transform i opacity. To są takie dwie
rzeczy, które możemy bez żadnych problemów animować na naszych stronach. Wszystko
inne, co chcemy animować, wszystkie inne właściwości powinny budzić nasz
niepokój i powinniśmy się 10 razy zastanowić czy chcemy to animować i to
na tyle, jeśli chodzi o takiego protip'a ode mnie.