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+
Okej to pokazaliśmy sobie jak uruchomić nasza aplikację
jak ją w podstawowy sposób debugować no to teraz powiedzmy
sobie faktycznie jak taką aplikację się robi przede wszystkim usuńmy sobie
wszystko co mamy w naszym pliku App.js bo nie będzie nam to potrzebne
i krótki wstęp tak jak już mówiłem
React Native mocno nie tyle inspiruje się co bazuje na React'cie
czyli na frameworku do tworzenia
aplikacji webowych no i tam w React'cie czy po prostu w sytuacji
w której robimy aplikację webową korzystamy ze znaczników html taki
główny znacznik to oczywiście div mamy też oczywiście parę innych jak section
mamy takie znaczniki jak tekstowe jak
h1 gdzie możemy sobie jakiś tekst napisać mamy
znaczniki paragrafu gdzie też możemy jakiś opis sobie
dodać i tak dalej i tak dalej jakby bezpośrednio tych znaczników w
React Native nie mamy ponieważ tak jak pokazywałem ten
nasz kod jest tłumaczony na kod natywny w związku z tym
te znaczniki musiały być troszeczkę zmienione i natomiast
one są bardzo podobne w związku z tym podstawowym elementem
podstawowym znacznikiem którego używamy w React Native jest
znacznik View ten znacznik można powiedzieć że jest takim odpowiednikiem
diva ale to tak naprawdę jest po prostu widok czyli
pusty kontener który może zawierać jakieś style jeśli
sobie odpalimy naszą aplikację zobaczymy że w tej chwili
nic tutaj się dzieje ponieważ nasz View jest pusty i
możemy sobie na przykład go jakoś ostylować podobnie jak w przypadku React'a
możemy sobie zrobić taki inline stylowania i ustawić
mu backgroundColor oczywiście z racji tego że to są inline style to piszemy je tutaj camelcasem
i na przykład dać color red backgroundColor
color red
a oczywiście ustawiłem color red ale jakby nie wiadomo jak
jaki ten View ma rozmiar w związku z tym nic się nie wyświetla prawidłowo
więc musimy mu ustawić jakiś rozmiar ustawmy mu
width 100% i height 100%
i w tej chwili widzimy że nasz widok jest jakby na
całym ekranie dostępny i te widoki oczywiście możemy
sobie zagnieżdżać dowolnie czyli możemy sobie zrobić tutaj View i
na przykład dopisać sobie jeszcze jeden View który
na przykład będzie miał style backgroundColor
blue width
będzie miał na przykład 100% ale tu musimy wszystko jako tekst
przekazywać i na przykład wysokość będzie miał 200 i zobaczmy
tak i mamy tutaj zagnieżdżony View w naszym
View i teraz pierwsza rzecz jaka się rzuca w oczy to
to że nie podejemy tu żadnych jednostek znaczy jeśli ja tutaj podam pixele to dostaniemy
błąd dlaczego dlatego że w przypadku React Native nie mamy do
dyspozycji takich jednostek jak w przypadku Reacta i generalnie przeglądarki
programowania aplikacji webowych czyli pixele emy remy
i wiele takich podobnych tworów mamy tak naprawdę
pixel independent density jednostki czyli to jest po prostu minimalna jednostka
jakby bez minimalna jednostka jaką możemy użyć nie
podajemy do tej żadnych jednostek to po prostu jest 200 wartość która troszkę inaczej będzie wyglądała
na przy różnych rozdzielczościach i po prostu nie powinniśmy sie tym przejmować to jest w
ten sposób wyświetlamy stylujemy rozmiar jakiegoś tam elementu
okej czyli mamy takie podstawowe podstawowy
znacznik View mamy zagnieżdżenie w
tych View no i teraz chcielibyśmy na przykład wyświetlić jakiś tekst i tak
jak w przypadku dlaczego w html mamy h1
czy czy właśnie znaczniki paragrafu tutaj mamy jeden ogólny znacznik tekst
i w tym tekście możemy sobie wypisać na przykład Hello
jak widać nasz znacznik jest tutaj wyświetlany
tuż pod tym ponieważ domyślny to jest po prostu wertykalnie ułożone
i wprowadźmy sobie tu jakiś jakieś imię na
przykład Jan Nowak fajnie
naszym jest wyświetlane załużmy że to jest jakiś tam nasz profil i
możemy sobie poniżej wyświetlić jeszcze jakiś description
czyli something cool here cokolwiek
to będzie później oczywiście też możemy sobie wystylować na
przykład fontSize i możemy podać że to jest 20 żeby
ten Jan Nowak był troszeczkę troszeczkę większy
z takich komponentów
które które mogą nam się przydać będą nam się przydawały to jeszcze bardzo istotny jest
komponent Image czyli jeśli chcielibyśmy wyświetlić jakąś grafikę na
przykład Image wyświetlamy sobie Image
czyli oczywiście to jest nasza grafika to możemy zrobić na dwa sposoby
po pierwsze właściwie na jeden sposób ale z dwoma źródłami
czyli po pierwsze możemy sobie wyświetlić coś i możemy
tutaj wkleić po prostu jakiś link do naszego obrazka Image jest na defined musimy
go oczywiście sobie wyeksportować w tym miejscu i zobaczmy
jak to wygląda nie wygląda nie wygląda dlatego że znowu
ta nasza grafika nie ma zadnych styli więc nie będzie wiedziała jaki ma mieć rozmiar i
załóżmy że to będzie miało 100 na 100 i
mamy naszą grafikę fajnie jakby jak sobie odświeżymy nasz
projekt to zobaczymy że ta grafika jest no ale oczywiście się scache'uje więc wyświetli
nam się automatycznie ale równie dobrze moglibyśmy taką
grafikę załadować lokalnie co chyba w tym
wypadku chcielibyśmy zrobić więc jak to zrobimy po pierwsze
musimy stworzyć sobie jakiś folder z assetsami nie tutaj tylko
na przykład tutaj assets
i musimy do tego folderu wrzucić naszą grafikę więc
przeciągniemy sobie grafikę którą już wcześniej pobrałem mamy naszego
Lorda Vadera i musimy sobie tą grafikę tutaj
załadować do tego nam posłuży operator require zrobimy
sobie naszą profileImage to się równa require
assets image.jpg okej
no i teraz zamiast a może pokazać że to działa to
zrobimy sobie tutaj po prostu nasze
profileImage okej jak
widać mamy dwa obrazki pod sobą jeden jest ładowany lokalnie drugi jest ładowany
z url-a i teraz
jeszcze tylko taki problem okej tutaj akurat ta grafika idealnie się nam wpasowała ale co jeśli ja bym na
przykład tutaj ustawił szerokość na 50 okej
fajnie ucięło mi tą grafikę wycentrowało mi ja ale mamy parę innych
opcji które możemy tutaj zrobić predefiniowalnie opcji których możemy użyć i to się jakby
jedną z ważnych parametrów tego Image jest nasz props
resizeMode w którym to możemy wybrać w jaki sposób nasza grafika ma być wyświetlana
czyli chyba domyślnie właśnie to jest center nie bym domyślnie to było
widocznie coś innego natomiast jeśli ustawimy sobie właśnie parametr center to zauważmy
że mimo tego że nasz Image tak naprawdę jest większy to nasza
grafika zostanie wycentrowana w nim i przeskalowana możemy sobie ustawić
na przykład contain to spowoduje tutaj akurat w tym przypadku to samo co
center czyli że nasza grafika zawsze cała się będzie mieścić czyli jeśli ja zmienię
dalej szerokość na przykład na 30 to jakby ta grafika i
tak będzie skalowana tak żeby cała była wyświetlana wewnątrz tego naszego kontenera
jakim jest Image mamy też parę innych opcji
i możemy sobie na przykład zrobić cover i to spowoduje że cała
grafika będzie wypełniać nas kontener czyli jeśli
nawet ten kontener jest mniejszy od tej grafiki jak widać tutaj to ona utnie
nam tą grafikę natomiast zawsze kontener będzie wypełniony
a jeśli chcielibyśmy żeby ta grafika była
widoczna w stu procentach i dopasowywała się no to możemy korzystać ze stretcha
czyli że nasza grafika się rozciągnie raczej rzadko się z tego korzystać bo
tracimy w tym momencie proporcje tego obrazka no
ale może w jakiś przypadkach być to potrzebne ostatnim
ostatnią opcją jakiej możemy użyć w przypadku resize'a jest repeat
czyli to się nam przyda jeśli na przykład ten width będzie bardzo szeroki
czyli na przykład będzie mieć 500 to nasza grafika może się tutaj
zduplikować jakby w odpowiedniej
ilości tak żeby dopasować się do szerokości elementu no ale raczej też
zbyt czasu się z tego nie korzysta zostawmy sobie może na
razie domyślną wartość i domyślne domyślną wysokość
i zobaczmy jak nasz profil wygląda no okej jakoś tam wygląda
nie jest źle jest tylko jedna rzecz która
może się rzucać w oczy która akurat teraz może nas tak bardzo nie boli ale zauważcie że nasz View który
jest tutaj wychodzi tak naprawdę
ponad tego notcha który jest w iphone i dolny
widok wychodzi też ponad to sie nazywa safe area
na iphone czyli coś to nie jest za bardzo klikalne i tykalne bo tutaj mamy na status
bars z którego wyjeżdżają nasze opcje jeszcze jeśli ja tutaj dodałem taki taki
nagłówek taki header powiedzmy to to nie boli ale się sobie taki header zakomentujemy
zauważcie co się dzieje tak nasza grafika wyjeżdża tutaj poza obszar w którym chcielibyśmy
żeby to działało na szczęście oczywiście
moglibyśmy w jaki sposób dać tutaj margines no ale jeśli zauważcie
dodamy sobie margines do naszego widoku głównego albo właściwie padding do naszego
kontenera paddingTop ustawimy go na 50 okej
tu jest dobrze natomiast popatrzcie co tu się dzieje tak na androidzie który nie ma tych safe area
no wygląda to kiepsko i jak sobie z tym najlepiej poradzić na szczęście
React Native daje nam gotowy komponent który nam pozwala nie
martwić się tym problemem ten komponent nazywa się SafeAreaView i
on tak naprawdę jak zaraz zobaczymy opakowuje nasz
kontener właśnie w tą bezpieczną strefę w której
możemy renderować elementy które są klikalne i z których jej użytkownik
może korzystać i teraz sobie usuńmy nasz padding i zauważmy że teraz
w obu przypadkach nasze elementy są dopasowane do góry ale
nie są nie wykraczają poza ten obszar który nie jest klikalny i do którego w którym za którym
nie chcielibyśmy się chować