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+
W poprzedniej lekcji skonfigurowaliśmy sobie naszą
nawigację pobraliśmy wszystkie paczki teraz czas zacząć z
tego korzystać zaczniemy sobie to od tab nawigatora
jak widzicie to też osobna paczka którą musimy doinstalować więc dokładnie tak zrobimy tutaj
świetnie ona nie korzysta
z żadnych natywnych nie tworzy żadnych natywnych zależności nic nie musimy sobie doinstalować
naszych potsów a to
co możemy zrobić to może tak zróbmy sobie osobny plik żeby gdzieś tam nie robić
sobie tutaj za dużo zamieszania nazwijmy go sobie nasz tab navigator
kropka js tworzymy nowy komponent nazwiemy go tab
navigator tab navigator
co tutaj będzie przede wszystkim
musimy zaimportować sobie metodę z
react navigation bottom tabs która
nam stworzy nasz navigator więc tak tworzymy sobie
consta tab równa się create bottom tab navigator i jak
wygląda konstrukcja takiej nawigacji z bottom
barem tak jak mówiłem dwa podstawowe elementy naszej
nawigacji to jest navigator więc tworzymy sobie taki nasz navigator to
się trochę różni jeśli widzieliście przykłady kodu albo
macie taki projekt nad którym pracujecie albo będziecie pracować i zobaczycie że ta nawigacja wygląda trochę inaczej
to najprawdopodobniej dlatego że korzystacie z wersji 4 albo wcześniejszej react navigation
my w tej chwili korzystamy z wersji 5 i ona ma tam troszkę inny
inną formułę inaczej troszkę się korzystaa z tej nawigacji
ale migracja nie jest jakaś cięzka więc jeśli macie w
wersji v4 spokojnie do v5 możecie przyjść nie ma takich olbrzymich
zmian no i teraz zrobiliśmy sobie nasz navigator no i teraz zróbmy sobie
nasze screeny taki screen przyjmuje dwa propsy które
są wymagane po pierwsze to jest nazwa czy dokładniej name title tak
dokładnie to jest name i nazwijmy to sobie list
tak ponieważ mamy naszą listę todo a komponentem ojej
komponentem będzie
nasza todo list swietnie drugim
drugą zakładką będzie nasz profil i
tutaj naszym komponentem będzie profile screen okej
to nam nie jest potrzebne i tak naprawdę tyle stworzyliśmy
nasz prosy nawigator i użyjemy go w tej chwili w naszej aplikacji po
prostu go dodamy tutaj tab navigator
okej no dobra i zobaczmy
co się stało wygląda
okej ale dla pewności jeszcze raz to przygotujemy i zobaczcie mamy nasze
zakładki zarówno na iOS-ie i androidzie działa to wygląda
i działa to bardzo podobnie a więc fajnie i tak naprawdę zrobiliśmy naszą
podstawową obsługę naszej nawigacji jest
jeszcze jedna rzecz o której warto wspomnieć w przypadku nawigacji bo tak naprawdę ona nie jest jakaś zbyt skomplikowana
to jest to że w momencie pierwszego
wejścia na nasz ekran czyli jeśli wchodzę tutaj to oczywiście
ten ekran ten komponent bo ten ekran jest naszym kompanem się
montuje i jak zmieniam zakładkę po raz pierwszy to ten komponent też jest montowany natomiast
przy kolejnych zmianach one już sa jakby wczytywane z pamięci ale może być taka sytuacja że
będziemy chcieli żeby coś się działo po przejściu na
tą zakładkę na przykład no teraz
możemy żeby po prostu coś się logowało i jeśli wejdziemy sobie do
naszego profile screenu i
to nam nie jest potrzebne i zrobimy sobie tutaj efekt który
będzie wywołany tylko raz okej
nie jest to zaimportowane i zobaczymy
sobie to w logach okej
widzimy że nasz profil się zamontował natomiast przy kolejnych przejściach już nie
no bo tak jak mówiłem on jest wczytywany z pamięci ale może być tak że właśnie przy tej
zmianie tych zakładek będziemy chcieli coś robić biblioteka daje nam taką możliwość daje
nam hooka którego musimy zaimportować sobie z
zaraz zobaczymy skąd import from react navigation
chyba native zaraz zobaczymy i hook
się nazywa create nie
przepraszam use focus effect dokładnie tak i
teraz jak to wygląda use focus effect a
tutaj mamy i w niej możemy zamieścić
to co chelibyśmy żeby było wywoływane za każdym razem jak zmieniamy
zakładkę zobaczymy w
przebudujmy sobie nasz projekt wyczyśćmy
logi okej to
działa tylko jakby nasz widzicie tutaj flipper nie chce żebyśmy
zostali zasypani takimi samymi wiadomościami więc on je grupuje w związku
z tym jeśli poprzedzę to jakimś innym eventem
to zauważcie że to się dzieje natomiast co się stanie jeśli ja zacznę tutaj
pisać widzicie że tutaj się ta liczba zwiększa tak
że ten profile mount wywołuje się wielokrotnie to
wynika z tego się dwa razy pewnie tylko raz 11 razy to się po prostu trochę
długo aktualizuje wynika to z tego z tego samego czego jakby korzystaliśmy
w naszym render item to znaczy że ta
funkcja jest anonimowa związku z tym z każdym renderem ona jest wywoływana na nowo co powoduje
że gdzieś tam wewnątrz tego jest efekt wymaga wywoływana na nowo jest
obsługa tego wszystkiego więc jeśli chcemy korzystać z use effecta to musimy też pamiętać to
nie jest stricte znowu związane z react native tylko bardziej z samymi hookami żeby
opakowywać takie rzeczy w callback use callback no i tutaj jeśli
przeniesiemy sobie naszą funkcję ona
nie ma żadnych zależności to
w tej chwili powinno wszystko działać jak należy okej
tutaj się troszeczkę tak wchodzimy mamy
profile mount ale jak już zaczynamy pisać coś ustawiać
to nic się nie zmienia profile mount jest jeden dokładnie o to chodziło więc
to taka mała rzecz o której warto pamiętać a wracając do naszej nawigacji no działa
to spoko ale fajnie byłoby gdybyśmy troszkę ostylowali te nasze
zakładki bo nie wygląda to najlepiej i do tego mamy tutaj trochę opcji
mamy coś takiego jak screen options screen
options w których mamy tab
bar label tab bar label przyjmuje funkcję
która musi zwrócić komponent najlepiej
tekstowy który będzie właśnie wyświetlany czyli możemy tutaj zrobić na przykład tab
1 zobaczmy coś
poszło nie tak oczywiście nie jest to zaimportowane więc nasz
bundler nie wie o co chodzi jest okej i mamy nasze zakładki tak one nawet działają
ale no nie do końca chyba nam o to chodziło więc możemy
to troszeczkę zmienić czyli zamiast używać
screen options w ten sposób to screen options użyjemy w ten
sposób czyli wywałamy to jako funkcję
jeśli
się nie pochrzaniłem z tym wszystkim to powinno dalej działać spróbujmy
okej działa dlaczego
chciałem użyć tego jako funkcji dlatego że tutaj w parametrach dostajemy
może nawet to będziemy mieć odpowiedziach dokładnie mamy
route i teraz to co możemy zrobić to co domyślnie jest tutaj robione
to jest route name i będziemy mieli to co tak naprawdę
mieliśmy na początku no właśnie i teraz możemy sobie zrobić tutaj
prosty warunek że jeśli route name to się równa profile to
wyświetl profile a w przeciwnym wypadku
wyświetl list czyli może wiele to nie wnosi ale pokazuje że
dokładnie mamy nad tym pełną kontrolę podobnie jak w przypadku naszego
labelka tak który jakby wyświetla się pod jakby na dole
naszej zakładki możemy zrobić z ikonką czyli
tab bar icon jest funkcja i tutaj możemy na przykład zwrócić view
ostylować je na szybko takie
view niech ma na przykład width 10 height
10 jakiś background color i wygląda to w ten sposób
oczywiście zgodnie ze sztuką przerzucamy to tutaj
nazwiemy to sobie tab icon to
się na styled view i mamy width
może nawet trochę większą dam 10px
heigth 20px i
background color no niech to będzie okej
a bez tego gray świetnie okej zobaczmy
jak to wygląda jest znośnie możemy
zrobić jeszcze tab round icon tab
square icon weźniemy
w ten sposób że to przepraszam
to damy na górze a
tu po prostu dopiszemy border-radius 10 pikseli
i uzyjemy tego samego warunku
którego użyliśmy tutaj czyli jeśli route name
chcemy profil to niech to zwróci nam
komponent tab square w przeciwnym wypadku niech to zwróci nam tab
round okej no i
spoko i wygląda to teraz całkiem fajnie oczywiście jest jeszcze jedna rzecz o której
zapomniałem i możemy ją sobie na przykład tutaj dopisać w parametrach funkcji
tab bar label i tak samo dostaniemy takie pole jak focus i na przykład możemy
tutaj focus i możemy ten
parametr sobie użyć czyli że na przykład przekażmy tutaj focus focus
focus równa się focus
na przykład dodajmy że jeśli niech to będzie opacity
korzystam z przekazywania propsów do styled components
p kropka focus równa
się no po prostu if p kropka focus a wtedy na przykład
1.0 w przeciwnym parku 0.7 zobaczmy
0.2 może na przykład dajmy
może nie jest to widoczne focus
przepraszam to powinno być okej
no i teraz widzimy że zakładka na której jesteśmy jest zaznaczona
a i to myślę że tyle jeśli chodzi o naszą nawigację
tab barową i zaraz powiemy sobie o nawigacji stackowej