MENU

React Native w akcji

(eBook)
0.00  [ 0 ocen ]
 Dodaj recenzję
Rozwiń szczegóły »
  • Druk: Warszawa, 2020

  • Wydanie/Copyright: wyd. 1, 2020

  • Seria / cykl: W akcji

  • Autor: Nader Dabit

  • Tłumacz: Magdalena Rogulska, Mariusz Rogulski

  • Wydawca: Wydawnictwo Naukowe PWN

  • Typ oprawy: miękka

  • Formaty:
    mobi
    ePub
    (Watermark)
    Watermark
    Znak wodny czyli Watermark to zaszyfrowana informacja o użytkowniku, który zakupił produkt. Dzięki temu łatwo jest zidentyfikować użytkownika, który rozpowszechnił produkt w sposób niezgodny z prawem. Ten rodzaj zabezpieczenia jest zdecydowanie najbardziej przyjazny dla użytkownika, ponieważ aby otworzyć książkę zabezpieczoną Watermarkiem nie jest potrzebne konto Adobe ID oraz autoryzacja urządzenia.

Produkt niedostępny
Dodaj do schowka

React Native w akcji

React Native daje programistom mobilnym i webowym moc obydwu środowisk. Napisz swoją aplikację raz i łatwo wdróż ją na iOS-a, Androida i w przeglądarce. Aplikacje React Native kompilują się w kod specyficzny dla danej platformy, skracając czas programowania, wysiłek programisty i koszty! A ponieważ używasz do tego JavaScript i frameworka React, to czerpiesz korzyści z ogromnego ekosystemu narzędzi, wiedzy i wsparcia.
React Native w akcji uczy tworzenia wysokiej jakości wieloplatformowych aplikacji mobilnych i webowych. Dzięki temu praktycznemu przewodnikowi od razu zaczniesz tworzyć kompletną aplikację za pomocą jasnych i łatwych do wykonania instrukcji. Podczas rozwijania swoich umiejętności przejdziesz do bardziej zaawansowanych tematów, takich jak stylowanie, API, animacje, architektura danych i wiele więcej! Dowiesz się również, jak zmaksymalizować ponowne użycie kodu bez rezygnacji z wyglądu i specyfiki natywnej platformy.
Co jest w środku:
• Budowanie wieloplatformowych aplikacji mobilnych i webowych
• Routing, redux i animacje
• Sieciowe żądania dotyczące danych
• Lokalne przechowywanie i pobieranie danych
• Zarządzanie danymi i stanem
Publikacja jest przeznaczona dla początkujących i średnio zaawansowanych programistów stron webowych, Androida i iOS-a.

„Dowiedz się, jak wykorzystać posiadane umiejętności dotyczące JavaScript do tworzenia bogatych wieloplatformowych aplikacji mobilnych”.
Ian Lovell, Parmenion Capital Partners
„Nader Dabit nie tylko uczy, ale także wprowadza w szczegóły i introspekcję, które może znać tylko doświadczony weteran React Native”.
Joseph Tingsanchali, Netspend
„Szybki i praktyczny sposób na zwiększenie produktywności dzięki React Native”.
Francesco Strazzullo, extrategy
„Twój nieoceniony towarzysz nauki React Native”.
Ubaldo Pescatore, Datalogic

  • Sposób dostarczenia produktu elektronicznego
    Produkty elektroniczne takie jak Ebooki czy Audiobooki są udostępniane online po opłaceniu zamówienia kartą lub przelewem na stronie Twoje konto > Biblioteka.
    Pliki można pobrać zazwyczaj w ciągu kilku-kilkunastu minut po uzyskaniu poprawnej autoryzacji płatności, choć w przypadku niektórych publikacji elektronicznych czas oczekiwania może być nieco dłuższy.
    Sprzedaż terytorialna towarów elektronicznych jest regulowana wyłącznie ograniczeniami terytorialnymi licencji konkretnych produktów.
  • Ważne informacje techniczne
    Minimalne wymagania sprzętowe:
    procesor: architektura x86 1GHz lub odpowiedniki w pozostałych architekturach
    Pamięć operacyjna: 512MB
    Monitor i karta graficzna: zgodny ze standardem XGA, minimalna rozdzielczość 1024x768 16bit
    Dysk twardy: dowolny obsługujący system operacyjny z minimalnie 100MB wolnego miejsca
    Mysz lub inny manipulator + klawiatura
    Karta sieciowa/modem: umożliwiająca dostęp do sieci Internet z prędkością 512kb/s
    Minimalne wymagania oprogramowania:
    System Operacyjny: System MS Windows 95 i wyżej, Linux z X.ORG, MacOS 9 lub wyżej, najnowsze systemy mobilne: Android, iPhone, SymbianOS, Windows Mobile
    Przeglądarka internetowa: Internet Explorer 7 lub wyżej, Opera 9 i wyżej, FireFox 2 i wyżej, Chrome 1.0 i wyżej, Safari 5
    Przeglądarka z obsługą ciasteczek i włączoną obsługą JavaScript
    Zalecany plugin Flash Player w wersji 10.0 lub wyżej.
    Informacja o formatach plików:
    • PDF - format polecany do czytania na laptopach oraz komputerach stacjonarnych.
    • EPUB - format pliku, który umożliwia czytanie książek elektronicznych na urządzeniach z mniejszymi ekranami (np. e-czytnik lub smartfon), dając możliwość dopasowania tekstu do wielkości urządzenia i preferencji użytkownika.
    • MOBI - format zapisu firmy Mobipocket, który można pobrać na dowolne urządzenie elektroniczne (np.e-czytnik Kindle) z zainstalowanym programem (np. MobiPocket Reader) pozwalającym czytać pliki MOBI.
    • Audiobooki w formacie MP3 - format pliku, przeznaczony do odsłuchu nagrań audio.
    Rodzaje zabezpieczeń plików:
    • Watermark - (znak wodny) to zaszyfrowana informacja o użytkowniku, który zakupił produkt. Dzięki temu łatwo jest zidentyfikować użytkownika, który rozpowszechnił produkt w sposób niezgodny z prawem. Ten rodzaj zabezpieczenia jest zdecydowanie bardziej przyjazny dla użytkownika, ponieważ aby otworzyć książkę zabezpieczoną Watermarkiem nie jest potrzebne konto Adobe ID oraz autoryzacja urządzenia.
    • Brak zabezpieczenia - część oferowanych w naszym sklepie plików nie posiada zabezpieczeń. Zazwyczaj tego typu pliki można pobierać ograniczoną ilość razy, określaną przez dostawcę publikacji elektronicznych. W przypadku zbyt dużej ilości pobrań plików na stronie WWW pojawia się stosowny komunikat.
przedmowa xv
podziękowania xvi
o książce xix
o autorze xxii
o ilustracji na okładce xxiii
1. Pierwsze kroki z React Native 3
	1.1. Wprowadzenie do React i React Native 4
		1.1.1. Prosta klasa React 5
		1.1.2. Cykl życia React 6
	1.2. Czego będziemy się uczyć 7
	1.3. Co trzeba wiedzieć 7
	1.4. Jak działa React Native 8
		1.4.1. JSX 8
		1.4.2. Wątki 8
		1.4.3. React 8
		1.4.4. Jednokierunkowy przepływ danych 9
		1.4.5. Różnicowanie 9
		1.4.6. Myślenie komponentowe 9
	1.5. Mocne strony React Native 11
		1.5.1. Dostępność deweloperów 12
		1.5.2. Produktywność deweloperów 12
		1.5.3. Wydajność 12
		1.5.4. Jednokierunkowy przepływ danych 12
		1.5.5. Środowisko pracy deweloperów 13
		1.5.6. Transpilacja 14
		1.5.7. Produktywność i wydajność 14
		1.5.8. Społeczność 14
		1.5.9. Otwartość 15
		1.5.10. Natychmiastowe aktualizacje 15
		1.5.11. Inne rozwiązania do budowania wieloplatformowych aplikacji mobilnych 15
	1.6. Wady React Native 16
	1.7. Tworzenie podstawowych komponentów i ich użycie 16
		1.7.1. Przegląd komponentów 16
		1.7.2. Komponenty natywne 17
		1.7.3. Budowa komponentu 18
			Składnia createClass (ES5, JSX) 18
			Składnia class (ES2015, JSX) 18   
			Komponent bezstanowy (wielokrotnego zastosowania) (JSX) 19   
			createElement (JavaScript) 19
		1.7.4. Komponenty eksportowalne 20
			Importowanie 20   
			Deklaracja komponentu 21   
			Metoda render 21   
			Eksporty 21
		1.7.5. Łączenie komponentów 22
	1.8. Tworzenie pierwszego projektu 23
		1.8.1. Create React Native App CLI 23
		1.8.2. React Native CLI 24
2. Zrozumieć React 29
	2.1. Zarządzanie danymi komponentów przy użyciu stanu 30
		2.1.1. Poprawne operowanie stanem komponentu 30
			Ustawianie stanu początkowego 30   
			Aktualizacja stanu 31
	2.2. Zarządzanie danymi komponentów za pomocą właściwości 35
				Właściwości dynamiczne 36   
				Destrukturyzacja właściwości i stanu 38   
				Właściwości z komponentami bezstanowymi 39   
				Przekazywanie tablic i obiektów jako właściwości 40
	2.3. Specyfikacje komponentów React 41
		2.3.1. Użycie metody render do tworzenia interfejsu użytkownika 41
		2.3.2. Użycie inicjalizatorów właściwości i konstruktorów 42
	2.4. Metody cyklu życia React 43
		2.4.1. Statyczna metoda getDerivedStateFromProps 44
		2.4.2. Metoda cyklu życia componentDidMount 45
		2.4.3. Metoda cyklu życia shouldComponentUpdate 45
		2.4.4. Metoda cyklu życia componentDidUpdate 46
		2.4.5. Metoda cyklu życia componentWillUnmount 46
3. Budowanie pierwszej aplikacji React Native 48
	3.1. Tworzenie rozkładu aplikacji TODO 49
	3.2. Kodowanie aplikacji TODO 50
	3.3. Otwieranie menu deweloperskiego 55
		3.3.1. Otwieranie menu deweloperskiego w symulatorze iOS-a 55
		3.3.2. Otwieranie menu deweloperskiego w emulatorze Androida 56
		3.3.3. Korzystanie z menu deweloperskiego 56
	3.4. Kontynuowanie budowania aplikacji TODO 58
4. Wprowadzenie do stylów 79
	4.1. Stosowanie i organizowanie stylów w React Native 80
		4.1.1. Stosowanie stylów w aplikacjach 81
		4.1.2. Organizowanie stylów 82
			Deklarowanie arkuszy stylów w tym samym pliku co komponent 83   
			Deklarowanie arkuszy stylów w osobnym pliku 83
		4.1.3. Style są kodem 84
	4.2. Nadawanie stylu komponentom View 87
		4.2.1. Ustawianie koloru tła 88
		4.2.2. Ustawianie właściwości obramowania 90
			Tworzenie obramowania z użyciem właściwości: kolor, szerokość i styl 91   
			Użycie promienia obramowania do tworzenia kształtów 92   
			Dodanie obramowania do komponentu Karta Profilu 95
		4.2.3. Określanie marginesów i wewnętrznych odstępów 96
			Korzystanie z właściwości margin 97   
			Korzystanie z właściwości padding 99
		4.2.4. Użycie position do rozmieszczania komponentów 101
		4.2.5. Pozycjonowanie w Karcie profilu 104
	4.3. Nadawanie stylu komponentom Text 105
		4.3.1. Komponenty Text kontra komponenty View 105
			Kolorowanie tekstu 106
		4.3.2. Style czcionek 108
			Określanie rodziny czcionek 108   
			Dostosowywanie rozmiaru tekstu za pomocą fontSize 111   
			Zmiana stylów czcionek 111   
			Określanie grubości czcionek 111
		4.3.3. Zastosowanie dekoracyjnych elementów stylów tekstu 112
			Określanie wysokości elementów tekstowych 112  
			Wyrównanie tekstu w poziomie 114   
			Podkreślanie lub przekreślanie tekstu 114   
			Style dekoracyjne tekstu (tylko iOS) 114   
			Dodawanie cieni do tekstu 114   
			Określanie odstępów między znakami (tylko iOS) 115   
			Przykłady stylów tekstu 115
5. Gruntownie o stylach 120
	5.1. Rozmiary i style specyficzne dla określonej platformy 121
		5.1.1. Piksele, punkty i DP 121
		5.1.2. Tworzenie rzucanych cieni za pomocą ShadowPropTypesIOS i Elevation 123
			Tworzenie rzucania cieni w iOS za pomocą ShadowPropTypesIOS 123   
			Symulowanie rzucania cieni na urządzeniach z Androidem za pomocą elevation 125
		5.1.3. Praktyczne zastosowanie: rzucanie cienia w Karcie profilu 126
	5.2. Użycie przekształceń do przesuwania, obracania, skalowania i pochylania komponentów 127
		5.2.1. Efekty 3D z perspektywą 128
		5.2.2. Przesuwanie elementów wzdłuż osi X i Y za pomocą translateX i translateY 128
		5.2.3. Obracanie elementów za pomocą rotateX, rotateY i rotateZ (rotate) 129
		5.2.4. Ustawianie widoczności podczas obracania elementu o więcej niż 90° 132
		5.2.5. Skalowanie obiektów na ekranie za pomocą scale, scaleX i scaleY 133
		5.2.6. Użycie skalowania do stworzenia miniatur ProfileCard 134
		5.2.7. Pochylanie elementów wzdłuż osi X i Y za pomocą skewX i skewY 137
		5.2.8. Kluczowe kwestie dotyczące przekształceń 139
	5.3. Użycie Flexboksa do określania układu komponentów 140
		5.3.1. Zmiana wymiarów komponentu za pomocą flex 140
		5.3.2. Określanie kierunku wypełniania za pomocą flexDirection 141
		5.3.3. Definiowanie sposobu wykorzystania przestrzeni wokół komponentu za pomocą justifyContent 142
		5.3.4. Wyrównywanie elementów potomnych w kontenerze za pomocą alignItems 144
		5.3.5. Nadpisywanie wyrównania z kontenera nadrzędnego za pomocą alignSelf 145
		5.3.6. Zapobieganie przycinaniu elementów za pomocą flexWrap 147
6. Nawigacja 150
	6.1. Nawigacja w React Native w porównaniu do nawigacji webowej 151
	6.2. Budowanie aplikacji wykorzystującej nawigację 152
	6.3. Trwałość danych 164
	6.4. Korzystanie z DrawerNavigator do tworzenia nawigacji wysuwanej 165
7. Animacje 167
	7.1. Wprowadzenie do Animated API 168
	7.2. Animowanie pola formularza podczas wprowadzania wartości 170
	7.3. Tworzenie niestandardowej animacji ładowania za pomocą interpolacji 172
	7.4. Tworzenie wielu równoległych animacji 175
	7.5. Tworzenie sekwencji animacji 177
	7.6. Użycie Animated.stagger do przesunięcia czasów rozpoczęcia animacji 180
	7.7. Inne przydatne wskazówki dotyczące korzystania z biblioteki Animated 182
		7.7.1. Zmiana animowanej wartości 182
		7.7.2. Wykonywanie wywołań zwrotnych 182
		7.7.3. Przekazywanie animacji do wątku natywnego 182
		7.7.4. Tworzenie niestandardowego elementu animowanego za pomocą createAnimatedComponent 183
8. Korzystanie z biblioteki architektury danych – Redux 184
	8.1. Czym jest Redux? 185
	8.2. Użycie kontekstu do tworzenia i zarządzania stanem globalnym w aplikacji React 185
	8.3. Implementacja Reduksa w aplikacji React Native 187
	8.4. Tworzenie reduktorów w celu przechowywania stanu 188
	8.5. Dodanie komponentu provider i utworzenie magazynu 189
	8.6. Dostęp do danych za pomocą funkcji connect 190
	8.7. Dodawanie akcji 192
	8.8. Usuwanie elementów z magazynu w reduktorze 197
9. Wieloplatformowe API 203
	9.1. Użycie Alert API do tworzenia uniwersalnych powiadomień 204
		9.1.1. Przypadki użycia dla alertów 205
		9.1.2. Przykład użycia alertów 205
	9.2. Użycie AppState API do wykrycia bieżącego stanu aplikacji 207
		9.2.1. Przypadki użycia AppState 207
		9.2.2. Przykład użycia AppState 207
	9.3. Użycie AsyncStorage API do utrwalania danych 208
		9.3.1. Przypadki użycia AsyncStorage 209
		9.3.2. Przykład użycia AsyncStorage 209
	9.4. Użycie Clipboard API do kopiowania tekstu do schowka użytkownika 211
		9.4.1. Przypadki użycia Clipboard 211
		9.4.2. Przykład użycia Clipboard 211
	9.5. Korzystanie z Dimensions API, aby uzyskać informacje o ekranie użytkownika 213
		9.5.1. Przypadki użycia Dimensions 213
		9.5.2. Przykład użycia Dimensions 213
	9.6. Użycie Geolocation API do uzyskiwania bieżących informacji o lokalizacji użytkownika 214
		9.6.1. Przypadki użycia Geolocation API 214
		9.6.2. Przykład użycia Geolocation 214
	9.7. Użycie Keyboard API do sterowania lokalizacją i funkcjonalności natywnej klawiatury 217
		9.7.1. Przypadki użycia Keyboard API 217
		9.7.2. Przykład użycia Keyboard API 217
	9.8. Użycie NetInfo do uzyskania bieżącego statusu online/offline użytkownika 219
		9.8.1. Przypadki użycia NetInfo 220
		9.8.2. Przykład użycia NetInfo 220
	9.9. Uzyskiwanie informacji o zdarzeniach dotykowych i gestach za pomocą PanResponder 221
		9.9.1. Przypadki użycia API PanResponder 221
		9.9.2. Przykład użycia PanResponder 223
10. Implementowanie komponentów i API specyficznych dla iOS 227
	10.1. Tworzenie kodu specyficznego dla platformy 228
		10.1.1. Rozszerzenia plików iOS i Androida 228
		10.1.2. Wykrywanie platformy za pomocą Platform API 229
	10.2. DatePickerIOS 230
		10.2.1. Przykład użycia DatePickerIOS 231
	10.3. Użycie PickerIOS do pracy z listami wartości 233
		10.3.1. Przykład użycia PickerIOS 235
	10.4. Użycie ProgressViewIOS do wyświetlania wskaźników ładowania 236
		10.4.1. Przypadki użycia ProgressViewIOS 237
		10.4.2. Przykład użycia ProgressViewIOS 237
	10.5. Użycie SegmentedControlIOS do tworzenia poziomych pasków z elementami 238
		10.5.1. Przypadki użycia SegmentedControlIOS 239
		10.5.2. Przykład użycia SegmentedControlIOS 239
	10.6. Użycie TabBarIOS do renderowania kart u dołu interfejsu użytkownika 240
		10.6.1. Przypadki użycia TabBarIOS 241
		10.6.2. Przykład użycia TabBarIOS 242
	10.7. Użycie ActionSheetIOS do wyświetlania arkusza akcji oraz menu udostępniania 243
		10.7.1. Przypadki użycia ActionSheetIOS 244
		10.7.2. Przykład użycia ActionSheetIOS 244
11. Implementowanie komponentów i API specyficznych dla Androida 247
	11.1. Tworzenie menu za pomocą DrawerLayoutAndroid 248
	11.2. Tworzenie paska narzędzi za pomocą ToolbarAndroid 252
	11.3. Implementowanie przewijanego stronicowania za pomocą ViewPagerAndroid 254
	11.4. Użycie DatePickerAndroid do wyświetlenia natywnego pola wyboru dat 256
	11.5. Tworzenie pola wyboru czasu za pomocą TimePickerAndroid 259
	11.6. Implementowanie komunikatów Toast z użyciem ToastAndroid 261
12. Budowanie aplikacji Star Wars przy użyciu komponentów wieloplatformowych 267
	12.1. Utworzenie aplikacji i zainstalowanie zależności 269
		12.1.1. Importowanie komponentu People i tworzenie komponentu Container 269
		12.1.2. Tworzenie komponentu nawigacyjnego i rejestrowanie ścieżek 271
		12.1.3. Tworzenie głównej klasy dla początkowego widoku 272
	12.2. Utworzenie komponentu People z użyciem FlatList, Modal i Picker 274
		12.2.1. Utworzenie stanu i skonfigurowanie wywołania pobierającego dane 276
		12.2.2. Dodanie pozostałych metod klasy 278
		12.2.3. Implementacja metody render 279
	12.3. Tworzenie komponentu HomeWorld 281
		12.3.1. Utworzenie klasy HomeWorld i zainicjowanie stanu 281
		12.3.2. Pobieranie danych z API za pomocą właściwości url 283
		12.3.3. Dokończenie komponentu HomeWorld 284
13. Dodatek. Instalowanie i uruchamianie React Native 287
	13.1. Programowanie dla urządzeń z iOS 287
		13.1.1. Rozpoczynanie 287
		13.1.2. Testowanie instalacji na iOS 288
	13.2. Programowanie dla urządzeń z Androidem 288
		13.2.1. A.2.1. Mac i Android 288
		13.2.2. Windows i Android 289
		13.2.3. Linux i Android 289
		13.2.4. Tworzenie nowego projektu (Mac/Windows/Linux) 290
		13.2.5. Uruchamianie projektu (Mac/Windows/Linux) 290
indeks 291
NAZWA I FORMAT
OPIS
ROZMIAR

Przeczytaj fragment

NAZWA I FORMAT
OPIS
ROZMIAR
(mobi)
Brak informacji
(epub)
Brak informacji

Inni Klienci oglądali również

9,04 zł
11,90 zł

Kuszenie w Chikaldzie

Obyczajowa powieść w oparciu o dzieje miłości hinduskiej lekarki i chrześcijańskiego lekarza ukazuje różnice i podobieństwa między chrześcijaństwem a hinduizmem. W tle wydarzeń, na których osnuta jest fabuła powieści, przewija się działal...
14,36 zł
16,70 zł

Zdolności w akcji

Publikacja poświęcona problematyce psychologii różnic indywidualnych i pozaintelektualnym wyznacznikom sprawności wykonywania operacji umysłowych. Autor omawia i bada czynniki powodzenia takich operacji. Rozważa ich konteksty osobowościowo-afekt...
67,20 zł
84,00 zł

Ryzyko akcji notowanych na GPW

Pomiar i analiza ryzyka inwestycyjnego odgrywają istotną rolę podczas podejmowania decyzji na rynku finansowym. Pomagają inwestorom oraz zarządzającym portfelami oceniać efektywność dokonywanej inwestycji. Są również wykorzystywane w różn...
56,40 zł
94,00 zł

Wzorce Cloud Native

Platformy chmurowe obiecują Świętego Grala: niemal zerowe przestoje działania, nieskończoną skalowalność, krótką pętle zwrotnych informacji, odporność na problemy i kontrolę kosztów. Ale jak to osiągnąć? Stosując podejście cloud-native, p...
2,55 zł
3,40 zł

Emisja akcji w Polsce w nowej europejskiej perspektywie - jednolity rynek papierów wartościowych w Unii Europejskiej. Rozdział 4. Spółka akcyjna i akcje

Poważną zaletą książki jest jej przystępny język, gdyż nawet stosunkowo skomplikowane zagadnienia przedstawione są w sposób jasny i przejrzysty. Autorka umiejętnie połączyła kwestie ekonomiczne z analizą prawną, dbając przez cały czas o wysoki p...
83,16 zł
99,00 zł

Wpływ informacji makroekonomicznych na transakcje na rynkach akcji

W monografii zostały przedstawione wyniki badań reakcji inwestorów na giełdach w Warszawie, Wiedniu i Frankfurcie na publikacje wskaźników makroekonomicznych oraz wskaźników nastrojów opisujących stan gospodarki USA. Do ocen...
158,76 zł
189,00 zł

Nadzór administracji państwowej nad obrotem pierwotnym akcjami

Monografia jest pierwszą publikacją kompleksowo omawiającą problematykę prowadzenia oferty publicznej (w tym IPO), zasad sporządzania i zatwierdzania prospektów emisyjnych oraz dopuszczania i wprowadzania akcji do obrotu na rynku regulowanym. Te...
106,20 zł
118,00 zł

Legitymacja uprawnionego z akcji

W książce kompleksowo omówiono zagadnienia dotyczące zasad identyfikacji osoby uprawnionej z każdego rodzaju akcji oraz zaprezentowano w sposób systematyczny reguły wykonywania poszczególnych uprawnień udziałowych w spółce...
35,91 zł
39,90 zł

Akcja adaptacja. Jak pomóc dziecku i sobie w zaprzyjaźnieniu się z przedszkolem

Kiedy dziecko idzie do przedszkola, otwiera się przed nim i jego rodzicami nowy etap. I chociaż dla części rodziców wydaje się on oczywisty, często towarzyszy mu wiele rozterek:- Czy moje dziecko jest już gotowe?- Co, jeś...

Recenzje

Nikt nie dodał jeszcze recenzji. Bądź pierwszy!