Mobilne Aplikacje z React
5 godz. 51 min · React Native · Full-stack i Programowanie
Piotr SzacińskiZarówno iOS jak i Android posiadają swoje natywne SDK, do obsługi którego musimy poznać nowe języki - Swift czy Kotlin, o Objective-C czy Javie nie wspominając. Z kolei React Native jest do tego świetną alternatywą, która pozwala tworzyć jeden kod na obie platformy. Dodatkowo - bazuje na najpopularniejszym frameworku webowym, co znacząco zmniejsza próg wejścia.
Tak samo jak "czysty" React, React Native opiera się na komponentach. Poznasz ich specyfikę i nauczysz się poprawnie budować UI aplikacji. Zrozumiesz też jak najwydajniej zarządzać skomplikowanym layoutem, takim jak długie listy, i jak to wszystko łatwo stylować.
Animacje to nie tylko efekty przyjemne dla oka - to przede wszystkim dobry UX, który pozwala użytkownikowi odnaleźć się w aplikacji i zrozumieć jej mechanikę. Podczas kursu poznasz wszystkie podstawowe metody i koncepcje tworzenia animacji oraz poznasz sposoby optymalizacji ich działania. Dodatkowo omówimy prawidłowe podejście do dużo bardziej skomplikowanych interaktywnych animacji, przedstawimy ciekawe biblioteki oraz best-practices.
Praktycznie każda aplikacja, niezależnie od tego, czy web, czy mobile, składa się z wielu widoków i ekranów. Zarządzanie ścieżkami, jakimi użytkownik może się poruszać, to jedna z najważniejszych rzeczy - a w tym kursie dowiesz się jakich narzędzi należy używać i jak łatwo obsługiwać zagnieżdżone ekrany.
Niewątpliwym atutem aplikacji jest to, że może praktycznie bez ograniczeń przechowywać content w urządzeniu telefonu, a przez to - dostarczać treści niezależnie od dostępności internetu. Omówimy różne koncepcje zapisywania danych oraz poznamy metody i narzędzia do ich wdrażania.
Przybliżymy ci proces wypuszczania aplikacji "w świat" oraz przedstawimy narzędzia, z których sam autor korzysta do ułatwienia tego procesu.
Kurs jest dla każdego kto zna podstawy JavaScript oraz React i chciałby się rozwijać i tworzyć mega ciekawe projekty, które mogą używać aparatu czy sensorów smartfona.
0.62.2+
Czyli pokazaliśmy sobie jak w ciekawy sposób ostylować nasz
widok wykorzystaliśmy podstawowe komponenty skorzystaliśmy sobie ze Styled Components no i
teraz chcielibyśmy dodać jakąś akcję użytkownika zobaczyć w jaki sposób użytkownik
może może coś z tą aplikacją robić więc podstawowym
takim elementem są buttony czyli jakiś tam input zróbmy
sobie takiego buttona taki button wymaga od nas
podania tytułu na przykład nazwijmy to upgrade
załóżmy że będzie można nasz profil sobie upgrade'ować
fajnie ale zauważcie jedną rzecz którą będzie widać teraz zbudować
nam się musi android okej zobaczcie
na to co się stało inaczej wygląda ten button na androidzie inaczej
wygląda na iOS-ie dlaczego dlatego że skorzystaliśmy z gotowego komponentu button który
generuje nam natywny button iOS-owy i natywny button androidowy
na iOS-ie taki defaultowy button nie ma tła i po
kliknięciu zmienia mu się opacity natomiast w przypadku androida mamy jakiś background
z lekkimi radiusami na rogach i zauważcie że mamy taki efekt
materialowy czyli po kliknięciu nam się rozchodzi ten to tło no i
fajnie jakby w pewnych sytuacjach chcielibyśmy żeby to faktycznie tak wygądało natomiast
no jednak gdzieś tam zależy
nam na spójności nasz grafik powiedział no że nie może tak być że pre graficzny
pokazuje nam tu jeden konkretny button no i chcielibyśmy go zrobić w związku z tym w praktyce
z takiego elementu się nie korzysta bo bo rzadko
się zdarza żeby można sobie pozwolić na aż taką dowolność żeby tu był button taki a tu był button taki natomiast
załóżmy na poczet początku tej lekcji że to jest okej no
i chcielibyśmy żeby po upgrade coś się działo i na przykład żeby nam się po prostu
coś logowało więc do tego służy nam props onPress który
jest wywoływany w momencie kliknięcia no i teraz zróbmy sobie
naszą funkcję która to obsłuży na przykład onUpgradePress
i dodajmy tutaj naszego loga Upgrade
level okej
i wrzućmy to tutaj zobaczmy
czy to działa jak widać tutaj się nam loguje nasze
kliknięcie zostało przyjęte oczywiście to nie ma jakby wiekszego zwiazku
z React Nativem tylko bardziej Reactem możemy również to wywołać w ten sposób czyli bez przekazywania referencji
tylko że akurat w tym konkretnym wypadku nic nam to nie zmienia
natomiast też tak to działa ja jestem zwolennikiem właśnie przekazywania w ten sposób referencji to jest po prostu czystsze
ale czasem jak musimy dodatkowy parametr przekazać to musielibyśmy zrobić to w formie
takiej funkcji strzałkowej okej czyli jest spoko nam to działa zaraz
sobie dodamy jakąś obsługę faktycznie zwiększania tego levelu cokolwiek
to tutaj w tej chwili mam na myśli no ale jednak
chciałbym żeby ten button no wyglądał w ten sposób no i oczywiście można
by go jakoś tam stylować natomiast w praktyce znowu to jest trochę jak z tym expo jest
możliwe na starcie jest to fajne bo robimy sobie taki jeden komponent i nam
działa ale w praktyce gdzieś raczej się z tego nie korzysta to z czego się korzysta to
są wszystkiego rodzaju Touchable zauważmy że jak wpiszemy sobie Touchable to dostajemy
listę wielu możliwości wielu
komponentów które które są właśnie typu Touchable i takim postawowym jest TouchableHighlight
i on od buttona różni się jedną zasadniczą rzeczą właściwie wszystkie Touchable
różnią się jedną zasadniczą rzeczą one same w sobie nie mają kontentu to znaczy
my dopiero musimy jakby wewnątrz nich jak go tak wyświetlę to nic nam
się nie pojawi a nawet zresztą wyświetla mi się błąd że nasz Touchable
wymaga pojedyńczego dziecka czyli jakiegoś
komponentu który on owrapuje i pozwoli właśnie pozwoli
na interakcje z nim wiec dodajmy sobie jakiś tutaj tekst
nazwijmy to sobie właśnie upgrade okej
i mamy naszego upgrade'a z tą różnicą że no nic tutaj nam się nie dzieje w sensie
niby jest TouchableHighlight ale nic się nie dzieje więc
może ustawmy sobie ja na razie robię to inline'owo żeby pokazać wam na szybko oczywiście docelowo
przyniesiemy to sobie do naszych Styled Component może ustawię mu jakiś backgroundColor
ojejku nie to backgroundColor na
przykład na jakiś jaskrawy fajny typu red fajnie
ale dalej no nic się nie dzieje okej
więc może brakuje nam czegoś jeszcze popatrzmy sobie na parametry mamy coś takiego jak
underlayColor nie wiem
czy nam się załaduje podpowiedź natomiast to jest generalnie kolor który będzie wyświetlany w
momencie kliknięcia więc może tutaj ustawmy na blue i
teraz to powinno działać no niestety nie działa nie działa tego względu że ten
komponent nasz TouchableHighlight powiedzmy że jest w miarę sprytny i
on nie chce działać jako Touchable dopóki tak naprawdę takim Touchable nie będzie a będzie dopiero wtedy kiedy
faktycznie poprosimy go o to żeby nam mówił kiedy został klkniety
czyli musimy dodać metodę onPress w momencie kiedy ja dodamy zauważcie
że nasz TouchableHighlight działa i ustawia nam tło tak jak tak
jak byśmy chcieli i spoko moglibyśmy to zostawić tak ostylować ale
ja osobiście częściej korzystam z innego Touchable'a i
raczej jego używam w większości przypadków bo jakoś tak mi się wydaje ten
feedback kliknięcia taki bardziej naturalny TouchableOpacity jak sama nazwa wskazuje
on nam po prostu zmienia opacity
naszych dzieci które naszego dziecka które posiada wewnątrz czyli jeśli
tu zrobimy upgrade zapisz no proszę
bardzo zmienia nam ten upgrade to trochę swoją drogą przypomina trochę defaultowy
iOS-owy button i przy tym zostaniemy przy tym zostaniemy
to wygląda fajnie zobaczcie że tutaj TouchableOpacity nie wymaga od nas żebyśmy podawali metodę onPress
on po prostu już w tej chwili działa jeśli dodamy tutaj jednak ten onPress żeby zobaczyć czy to
na pewno działa onUpgrad tak się zdaje nazywała nasza metoda
tak jest wyczyśćmy sobie
logi no i mamy nasz Upgrade level który zostaje wywoływany
spoko zaczniemy sobie jednak
trochę ostylujmy nasz button nazwijmy go sobie UpgradeButton
button to sie rowna styled TouchableOpacity
i tak ustawmy mu background color żeby jakiś tam miał
na przykład niebieski bo bo upgrade
będzie fajnie i żeby miał jakiś padding
wewnątrz na przyklad 8px tu oczywiście nie średnik
i dodajmy jeszcze UpgradeButtonText
to się równa styled Text
i na przykład ustawmy mu color white o nie ma white ale to ciekawe jaki to jest whitesmoke
no nic zostawmy to tak UpgradeButton UpgradeButtonText
reload
oczywiście typowy błąd bo w Styled Components już nie
musimy podawać tego jako tekst no i fajnie mamy nasz button
zauważcie że działa tak samo tutaj tak samo tutaj to co mi się nie podoba to tak fajnie jakby jakiś miał border radius
żeby to nie bo takie ostre na przykład 4 pixele
świetnie i żeby miał jakiś margin-top
oczywiście w przypadku takich drobnych zmian ja sobie tutaj w tej chwili wymyślam
bo nie działam według jakiegoś projektu graficznego najprawdopodobniej w pracy będziecie
mieli po prostu zdefiniowany projekt najłatwiej oczywiście mieć taki symulator albo obok
naszego edytora tekstowego albo w innym na innym
monitorze a ja jakby ja nie mam tutaj jakichś wytycznych więc mogę sobie pozwolić na to żeby tak tak
latać okej super mamy działa nasz wywołanie upgrade level i
w sumie możemy na tym zakończyć ale jest jeszcze jedna rzecz którą chciałem wam pokazać onPress
to jest taki już takie kliknięcie które jest wywoływane zauważcie jeśli wyczyszczę te logii
tylko w konkretnych warunkach czyli klikam i jest natomiast
jesli przytrzymam dłużej ten button i puszczę to już ten upgrade level nie jest wywoływany
dlatego że kliknięcie jako takie
zdefiniowane jako musi być puszczenie
tego przycisku musi być w jakimś tam czasie od jego kliknięcia jeśli to jest dłużej niż jakiś tam
threshold którego nie znam powiedzmy 200 ms no to on nie traktuję tego jako kliknięcie
tylko być może przypadkowe tam przeswipowanie czy coś takiego tak samo jeśli puścimy
zjedziemy poza poza kontener tego buttona ale byćmoże
czasem chcielibyśmy reagować na samo wciśnięcie albo puszczenie i taką
opcję też mamy i do tego służą nam propsy onPressIn i
onPressOut raczej się ich jakoś
tak często nie używa aczkolwiek no warto zdawać sobie sprawę że takie istnieją out
i zobaczmy jak to działa klikam
onPressIn trzymam dość długo puszczam jest onPressOut
i tyle natomiast jak kliknę przeczyszczę jeszcze raz kliknę sobie to szybko
zauważcie że mamy najpierw onPressIn najpierw jest OnPressOut a potem Upgrade level
zresztą widać po czasie że nasz onPress jest wywołany
dokładnie w czasie momentu onPressOut oczywiście po nim czyli jakby w tym miejscu jest
sprawdzane czy gdzieś ten nasz threshold czasu został został
nie został przekroczony tak żebyśmy mogli potraktować
to jako kliknięcie no i tak naprawdę jeśli chodzi o takie podstawowe buttony to tyle