Yandex.Metrica

React Native Kılavuzu

React native ile uygulama geliştirenlere kılavuz niteliğinde olacak bu makalede en sık kullanılan temel işlemler ve ihtiyacınız olan bazı temel bilgilere yer verdim. Makaleyi sürekli güncel tutacağımı bilmenizi isterim. React native geliştirmesine devam ettiğiniz sürece arada uğramanızı ve makalenin güncelliğini kontrol etmenizi öneririm.

React Native Kılavuzu

React Native Kılavuzu

Ortamın Ayağa Kaldırılması

Bu başlığın detayına girmeden önce ortam ayağa kaldırma ile uğraşamam diyorsanız yada local admin gibi sorunlarınız varsa expo üzerinden geliştirmelerinizi yapabilirsiniz. Expo online react-native geliştirme ortamı sağlamaktadır ve kodlarınızın çıktısını anlık olarak android ve ios platformlarından görebilirsiniz. Hatta kendi cihazınıza Expo uygulamasını kurup online ide üzerinde ki react-native kodlarınızın anlık çıktısını kendi cihazınız üzerinden görebilirsiniz. Expo üzerinde ki bir örneğimi bu makale’ye yetleştirdim. Örneğe gözatmak ve expo’yu keşfetmek için iOS Versiyonunu Öğrenme başlığı altında yerleştirilmiş olan expo örneğini görebilirsiniz.

React native ile ilgili gerekli olan araçların sisteminizde otomatik olarak kontrol edilip size bir rapor sunulmasını istiyorsanız npx @react-native-community/cli doctor komutunu çalıştırabilirsiniz.

React native projenini oluşturmak için alttaki komutu komut satırından çalıştırarak sisteminize global olarak react native cli aracını kurmuş olursunuz. React native projesini oluşturma, cihazda gösterme ve diğer react native işlemlerinin tümünü bu tool üzerinden gerçekleştireceğiz, o yüzden makalenin devamındaki kodları test edebilmek için kurmalısınız.

NPM ile yükleyebilirsiniz.

npm install -g  @react-native-community/cli

Npm(Node Package Manager) eğer ortam değişkenlerine ekli değilse yada NodeJS sisteminizde hiç kurulu değilse öncelikle NodeJS’i sisteminize kurmalısınız. NodeJS kurulum dosyası ve yönlendirmeler için https://nodejs.org/en/ adresinden faydalanabilirsiniz.

yada Yarn ile yükleyebilirsiniz.

yarn global add @react-native-community/cli

Proje oluşturmak için create-react-native-app v.b. npm paketleride mevcut. Bazı makaleler ve videolarda bu uygulama oluşturma süreçleri bu paketler üzerinden yapılıyor bu paketler official olmadığından güncel olmayabilir ve proje geliştirmede eksik bazı durumlardan patlayabilir. Canınızı sıkabilir tecrübe ile sabittir 🙂

@react-native-community/cli aracını kurduktan sonra yeni bir react native uygulaması oluşturmak için alttaki komutu komut satırından oluşturmak istediğiniz dizindeyken çalıştırın.

react-native init Todo

101 makalelerinin vazgeçilmezi Todo uygulaması yaparak react-native’i anlamaya çalışacağız.

Bazen yeni react-native uygulaması oluşturmak istediğinizde yeni versiyonda bazı uygumsuzluklar yaşanabilmektedir. Bu yüzden eski react-native versiyonları ile projeyi oluşturmak için alttaki gibi –version parametresi kullanarak belirttiğiniz react-native versiyonu ile projenin oluşturulmasını sağlayabilirsiniz.

 react-native init --version=”0.55.4″ Todo

Not: Yeni oluşturduğunuz react-native projesinin paket bağımlılıklarının kurulması için ilgili klasöre gidip npm install komutunu çalıştırmalısınız. Altta çalıştırmanız gereken kodları görebilirsiniz. Todo benim react-native init ... esnasında verdiğim proje adıdır eğer siz farklı bir isimde proje adı verdiyseniz cd Proje_Adi diyerek klasöre geçiş işlemi yapabilirsiniz.

cd Todo
npm install

Üstteki komut ile beraber alttaki görüntüde ki gibi bir sonuç ile karşılaşacaksınız(Versiyon değişikliğinden dolayı belki bazı ufak farklılıklar olabilir). android ve ios klasörleri eğer native tarafta geliştirme tecrübeniz yok ise çok nadir müdahale de bulunacağımız noktalardır.

React Native Started Project Structure

Eğer react-native geliştirmelerinizi Typescript ❤️ üzerinden yapmak istiyorsanız. react-native init komutuna ek olarak –template react-native-template-typescript@6.2.0 parametresini ekleyerek projenin Typescript template’i üzerinden inşa edilmesini ve gerekli konfigürasyonların otomatik olarak yapılmasını sağlayabilirsiniz.

Uygulamanın ilk ayağa kaldırıldığı dosya index.js dosyasıdır. Alttaki işaretli olan satır ile uygulama açılışında ilk render edilecek ekran’ın component’i parametre olarak geçilerek belirtilmektedir.

App.js’in uygulama açılışında ekrana render edilen ilk component olduğunu söylemiştik. Hemen App.js içeriğine ve ardından uygulamadaki çıktısına gözatalım.

Mobil Uygulamada ki Ekran Görüntüsü

React Native Init Project On Simulator

Uygulamanın cihaza nasıl yüklenildiğini öğrenmek için Cihaza Uygulama Yükleme kısmına gözatabilirsiniz.

Geliştirme Esnasında Kullanılabilecek Bazı İpuçları

Eğer sadece geliştirme safhasında iken çalıştırmanız gereken kodlar varsa __DEV__ global değişkenini kullanabiliriniz.

Eğer geliştirme yaparken sarı renkli uyarı kutucukları sizi sürekli rahatsız ediyor ve gizlemek istiyorsanız alttaki kodu uygun bir yere yazmanız ile bu sorun ortadan kalkacaktır.

Tüm hataları gizlemektense belirli hataları yada uyarıları gizlemek için kullanabileceğiniz farklı yöntemler de mevcut. Bunlar şöyledir;

Warning: ile başlayan tüm uyarıların gösterilmemesini istiyorsanız alttaki gibi bir kod bloğu kullanmalısınız.

Dizi verilerini listelemek için sıklıkla .map fonksiyonunu kullanırız ve key attribute’ü ile unique bir değer vermezseniz konsol’dan sizlere bazı uyarılarda bulunulacaktır. Bu Each uyarılarını gözardı etmek için alttaki kod bloğunu kullanabilirsiniz.

Birden fazla kural belirterek uyarı ve hataları gözardı etmek için alttaki gibi bir kod bloğu kullanabilirsiniz.

Üstteki kod bloğunda her bir kuralı virgül ile ayırıp yazdığımızı görüyoruz ilk kuralımız üstte bahsetmiş olduğumuz döngülerimiz içerisinde key attribute’ünde unique bir değer tanımlamadığımızdan performans açısında sorun yaşayabileceğimizi bizlere belirten uyarıları gözardı etmemizi sağlıyordu diğer kural ise Failed ile başlayan tüm uyarıları gözardı ediyoruz.

Bu uyarıları gözardı etmek aslında sizin için bir dezavantaj olduğunu unutmayın. Eğer uyarılarda belirtilen durumları çözmezseniz programınız büyüdükçe bu uyarıların sebep olduğu performans yada diğer sorunlar büyüyerek ağır sonuçlara yol açabilir.


Platform Nesnesi Kullanımı

En sık kullanılan nesnelerden biri sizin için hiç kuşkusuz Platform nesnesi olacaktır. Platform nesnesi ile platform(iOS, Android v.b.) özellinde işlemler yapmanız gerektiği durumlarda kullanabilirsiniz. Şimdi detaylıca bu Platform nesnesini nasıl kullanabileceğimize bakalım. Platform nesnesi react-native paketi altında yer aldığından bu paketi import ederek kullanabilirsiniz şimdi Platform nesnesini ne gibi işler için kullanabileceğimize bir gözatalım.

Gördüğünüz gibi style tanımlarken height özelliğine değeri set etmeden önce eğer mobil işletim sistemi ios ise 200 değeri ayarlanıyor değilse 100 değeri ayarlanıyor. Yani burada ios işletim sistemli cihazlara özel bir konfigürasyon durumu söz konusu.

Platfrom.OS özelliğinden gelebilecek diğer değerler: ios, android, macos, windows, web

Bu örnekte ise Platfrom select fonksiyonu yardımıyla geriye istediğimiz türde çıktı dönderebiliyoruz burada ios ve android işletim sistemleri için style özelliklerinden biri olan backgroundColor özelliği eğer ios ise red veya android ise blue ayarlanıp geri dönderilecek şekilde kurgulanmıştır ve container style’i bu koşula göre backgroundColor özelliğine sahip olmuş olacak.

Platform.select fonksiyonu içerisinde tanımla yapabileceğiniz sistemler: ios, android, macos, windows, web, default

Platform spesifik component hazırlıyorsanız Platform select yardımıyla her platform için geliştirdiğiniz ayrı component dosyalarını çağırıp kullanabilirsiniz.


Mobil İşletim Sistemi Versiyonlarını Öğrenme

Android Versiyonunu Öğrenme

iOS Versiyonunu Öğrenme

Platform nesnesini kullanmadan da platform spesifik component dosyalarını oluşturup kullanabilirsiniz bunun için .js extension’ından önce ios android diye belirtmelisiniz. Örnek olarak BigButton.ios.js ve BigButton.android.js dosyalarını oluşturup platform özelinden kodlar yazdığınızı varsayalım bunu herhangi bir dosyadan import etmek istediğinizde sadece BigButton diye belirmeniz yeterli geri kalan işi React Native otomatik olarak halletmektedir.

Üstteki tüm kodları Android ve iOS cihazında test edebilmek için alttaki aracı kullanabilirsiniz.


Cihaza Uygulama Yükleme

iOS

iOS emulator’de uygulamayı çalıştırmak için macos yüklü bir cihaza yada sanal disk’e kurulu hackintosh’a ihtiyacınız var. Eğer macos işletim sisteminiz varsa bu durumda cihazınızda NodeJS, ReactNative ve XCode yüklü olmalıdır. Bu araçlar da MacOS işletim sisteminizde yüklü ise o zaman alttaki komutu çalıştırarak emulator’de uygulamanız açılacaktır.

react-native run-ios

Eğer projeyi ilk defa oluşturduysanız yada Git, SVN v.b. repolardan projeyi çektiyseniz react-native run-ios demeden önce muhakkak ios klasörü altındayken pod install komutunu çalıştırmalısınız. Bu arada pod(CocoaPods) Swift ve Objective-C projeleri için paket yöneticisidir. Bu yüzden ios tarafındaki bağımlılıkları kurmak için pod install dememiz gerekiyor.

Üstteki kod’u çalıştıdığınızda default bir simulator ile uygulamayı çalıştıracaktır fakat sizin belirleyeceğiz bir simulator’de çalışmasını istiyorsanız o zaman alttaki gibi --simulator "Cihaz Adı" şeklinde parametreyi ekleyerek çalıştırmalısınız örnek olarak alttaki kod bloğunda iPhone 5s cihazında uygulamayı çalıştırabileceksiniz.

react-native run-ios --simulator “iPhone 5s”

Eğer gerçek bir iOS cihaza uygulamayı yüklemek isterseniz. --simulator parametresi yerine --device parametresi eklenerek gerçek bir cihaza yükleme yapılabilir. Eğer bir tane gerçek cihaz bağlı ise cihaz adı belirtmenize gerek yok ama birden fazla cihaz bağlı ise --device "Cihaz Adı" şkelinde giriş yapmalısınız.

react-native run-ios --device

Uygulamaya üstteki komut ile yükleme işlemi yaparsanız Debug modda yükleme işlemi gerçekleştirilir fakat Release modda kurulum işlemi gerçekleştirmek için alttaki komutu çalıştırmalısınız.

react-native run-ios --device --configuration Release

Android

Anroid emulator’de uygulamayı çalıştırmak için işletim sistemi zorunluluğu bulunmamaktadır. Windows, Linuxi MacOS işletim sistemlerinin herhangi birinden kolaylıkla emulatör’den uygulamayı çalıştırabilirsiniz emulator’lerinizi eğer Android Studio, Eclipse v.b. ide’lerden biri kurulu ise bu uygulamalar içerisinde yer alan AVD(Android Virtual Device) kısmından emulator’lerinizi yönetebilirsiniz. react-native run-ios dediğinizde eğer emulator açık değilse otomatik olarak varsayılan emulator çalıştırılmaktadır ama android tarafında bu durum mevcut değildir öncelikle AVD manager içerisinde emulator’ü çalıştırmalısınız sonrasında alttaki komut ile uygulamayı çalıştırabilirsiniz.

react-native run-android

Üstteki komut’u çalıştırdığınızda birden fazla android cihaz açık ise yada bir tane emulator ve bir tane’de gerçek cihaz bağlı ise o zaman hangi cihazdan çalıştırmak istediğinizi belirtmek için –device parametresini kullanmalısınız diye uyarı verecektir. Bu durumda alttaki –device DEVICE_ID kısmını ekleyerek ilgili cihazda uygulamayı çalıştırabilirsiniz.

react-native run-android --deviceId DEVICE_ID

Üstteki komut’da yer alan DEVICE_ID kısmında çalıştırmak istediğiniz gerçek cihazın id’si yada emulator’ün id’sini girmelisiniz eğer cihaz id’sinin ne olduğu konusunda bir fikriniz yok ise o zaman alttaki komut ile cihaz id’lerinin listelenmesini sağlayabilirsiniz.

adb devices

adb komutunun çalışabilmesi için Android SDK dizininizin Ortam değişkenlerinde yer aldığına emin olunuz. Hangi path’lerin ortam değişkenlerine ekleneceği konusunda fikriniz yoksa Android SDK Nedir ve Kurulumu Nasıl Yapılır? makalesine gözatmanızı öneririm.

Ayrıca gerçek cihazlarınız adb devices dediğinizde USB’den bağlı olmasına rağmen gözükmüyor ise Geliştrici seçenklerini açmamış olmalısınız. Geliştirici seçeneklerini açmak için ise Android Geliştirici Seçenekleri Nedir ve Nasıl Açılır? adlı makaleye gözatabilirsiniz.

Üstteki tüm komutlar uygulamanın DEBUG halinin ilgili cihaza kurulumunu gerçekleştirir. Eğer RELEASE halinin kurulmasını istiyorsanız --varian=release parametresini eklemelisiniz.

react-native run-android --variant=release

Markette ki Uygulama Detayına Url Scheme Kullanarak Yönlendirme

Uygulamalara yönlendirme işlemi yaparken url’den yada uygulamalara özel tanımlanmış bazı custom url şemaları kullanabiliyoruz. Örnek vermek gerekirse https://play.google.com/store/apps/details?id=com.muratoner.tabu linkine android bir mobil cihazdan tıkladığınızda size alternatif bir kaç uygulama olursa hangi uygulamadan açmak istediğinizi soracak yada Google Play Store’dan açmak isteyip istemediğiniz soracak yada direkt açacaktır. Aynı şekilde apple store linkine iOS cihazdan tıkladığınızda App Store’dan açmak isteyip istemediğinizi soracaktır.

Peki bu tür bir özelliği nerede kullanabilirsiniz?

Örnek vermek gerekirse uygulamanızdan sürekli güncelleme çıkıyorsunuz ve bazı güncellemeleri kullanıcıya zorunlu tutmak istiyorsunuz bu durumda kullanıcıya güncelleme işlemini yapması için Uygulama mağazalarına yönlendirme yapmanız gerekiyor bunlar Google Play Store ve App Store mağazalarıdır bunlara isterseniz direkt olarak url ile yönlendirme yapabilirsiniz üstte Google Play Store için örnek bir link paylaşmıştık ama önerilen yöntem Url Scheme’lardan yönlendirme yapmaktır peki hem iOS hem de android için kullanılacak url scheme’lar nelerdir?

Android: market://details?id=com.sabancidx.hrnext&hl=tr
iOS TestFlight: itms-beta://beta.itunes.apple.com/v1/app/1490076831?l=tr
iOS App Store: itms://itunes.apple.com/v1/app/1490076831?l=tr

Üstteki market:// şeması android tarafında Google Play Store mağazası için oluşturulmuş özel bir custom scheme’dır ve iOS tarafında göreceğiniz üzere 2 tane custome url scheme görüyorsunuz biri TestFlight dediğimiz uygulamayı canlıya çıkmadan önce test kullanıcıları ile buluşturduğunuz ortam diğer ise android tarafında olduğu gibi canlı olarak son kullanıcılar ile paylaştığınız ortamdır.


Flexbox Kullanımı

Flexbox ile alakalı çok güzel bir medium kaynağı buldum ve medium makalesi içerisinde yer alan cheatsheet görsellerini sizlerle muhakkak paylaşmam gerektiğini düşündüm.

Alttaki görsellerin tamamı https://medium.com/@js_tut/the-complete-css-flex-box-tutorial-d17971950bdc makalesinden alınmıştır.

Flex Nedir?

Flex, birden fazla Sütunu(column) ve içerik satırını(row) ana kapsayıcı boyunca otomatik olarak boyutlandırmak için kullanılan bir dizi kuraldır.

display:flex

Diğer bir çok CSS özelliğinden farklı olarak, Flex’te bir ana element ve onun altında barınan elementler yer almaktadır. Bazı CSS özellikleri sadece ana element’ler üzerinden kullanılabilirken bazıları direkt alt elementler tarafından kullanılabilmektedir.

Bir flex elementini display: flex ile stil uygulanmış ana element olarak düşünebilirsiniz. Bu ana element altında tanımlanan tüm öğeler ana element’in alt flex elementleri olarak kabul edilir.

Üstteki diagram’da her bir flex container’ının yer aldığı flex-start ve flex-end noktaları gösterilmektedir.

Elementleri yatay(Main Axis – justify) yada dikey(Cross Axios – align) olarak listeleme yapabilirsiniz. Varsayılan olarak elementler yatay’da listelenmektedir.

Eğer 3 sütun ve 6 elemanınız varsa ikinci satır otomatik olarak oluşturulacak ve geriye kalan 3 elemanınız otomatik olarak alt satıra geçişi sağlanacaktır. Bu durum için ekstra olarak bir media yada farklı stil tanımlaması yapmanıza gerek yoktur.

Üstteki paragraftaki senaryonun örnek ekran görüntüleri ise şöyledir.

Flex Direction Reverse

Main-Axis ekseninde eşit boyutlarda dağıtılan öğelerin özellikleri ve değerlerini aşağıdaki örneklerde göreceğiz.

Kolon sayısı 3 olarak belirtildiğine her bir üçlük kısmın ayrı satırlarda eşit alanlarda otomatik olarak dağıtıldığını görüyoruz kolonları sayısını nasıl belirlediğimizi görmek için aşağıdaki örneklere bekleriz 🙂

Satırların ve sütunların ana öğenin içine nasıl dağıtıldığı, Alttaki örneklerde gösterilecek olan CSS Flex özellikleri flex-direction, flex-wrap ve diğerleri tarafından belirlenir.
Burada bir konteyner içine yerleştirilmiş keyfi bir n-sayıda öğemiz var. Varsayılan olarak, öğeler soldan sağa doğru listelenir. Bununla birlikte, başlangıç ​​noktası tersine çevrilebilir. Tersine çevirme ile ilgili kod örneğini bir alttaki örnek görselde görebilirsiniz.

Direction – Yön

İsterseniz akışı ters yönüne çevirerek en son listelenen elemanın ilk sırada listelenmesini sağlayabilirsiniz.

Flex Direction Reverse

Wrap – Sarma

Flex Wrap

flex-wrap: wrap – Üst konteynerin alanı dolduğunda öğelerin nasıl sarılacağını belirler.

Flow – Akış

Flex Flow

flex-flow flex-direction ve flex-wrap özelliklerini bir özellikte tanımlamak için kullanılabilecek bir özelliktir.

Flex Flow

Üstteki görüntüde görüldüğü gibi kullanmış olduğumuz flex-flow: row wrap kodu flex-direction: row ve flex-wrap: wrap kodlarının kısa bir şekilde tanımıdır.

Flex-Flow: Row Wrap-Reverse

flex-flow: row wrap-reverse

Flex-Flow Row Wrap Justify Content Space Between

flex-flow:row wrap; justify-content: space-between;

Üstteki örnekde daha sonra göreceğimiz justify-content özelliğinin değeri space-between yaparak elemanlar arasında eşit şekilde boşluk bırarak konteyner’a tam sığdırılması sağlanmıştır.

Flex Flow Row Reverse Wrap

flex-flow:row-reverse wrap;

Flex Flow Row Reverse Wrap Reverse

flex-flow:row-reverse wrap-reverse;

Flex Flow Row Wrap Justify Conten Space Between

flex-flow:row wrap; justify-content: space-between;

Flex Direction Column ve Column Reverse

Elemanların dikey’de listelemek için flex-direction: column; kodunu kullandık.

Flex Wrap Wrap Reverse

flex-wrap: wrap-reverse;

justify-content

Justify Content

Altta ki animasyonda üstteki justify-content değerlerinin responsive olarak nasıl bir etkisi olduğu gösterilmektedir.

Justify Content Animasyonlu

flex-direction:row; justify-content: flex-start |flex-end |center|space-between |space-around |stretch |space-evenly. Örneklerimizde her bir satır için 3 kolon kullandık ama satırlar içerisinde tanımlayacağınız kolonların sınırı bulunmamaktadır.

Flex Direction Column Justify Content

Şimdide yatay’da tanımladığımız flex öğelerinin responsive olarak nasıl davrandığını animasyonlu olarak görelim.

Flex Direction Column Justify Content Animasyon

Şimdide flex-direction: row ile beraber align-content özelliğini kullanarak alt elemanları toplu olarak konumlandırma yapabiliriz justift-content’de olduğu gibi.

Flex Direction Row

flex-direction: column ile align-content özelliğinin ortak olarak kullanılması ile kullanılabilecek tüm değerlerin nasıl bir etki oluşturduğuna alttaki görselden gözatabilirsiniz.

Flex Direction Column

align-items

Align-items ana öğeye göre öğelerin yatay olarak hizalanmasını denetler.
Align Items

flex-basis

Flex Basis

Üstteki görselden dolayı aslında çok fazla açıklamaya gerek duymayan bu özelliğin amacı auto değeri ile elemanların boyutunun içeriğe göre otomatik olarak ayarlanması sağlanabilir yada ikinci örnekte görüldüğü gibi tüm elemanların minimum 50px olarak gözükmesi sağlanabilir.

flex-grow

Bu özellik ile konteyner içerisinde tanımlı olan elemanların her birinin aynı boyutta değil de belirttiğimiz bazı elemanların diğer elemanlara göre daha büyük gözükmesini sağlayabiliriz.

Flex Grow

Üstteki görselde 3 farklı örnek görüyoruz ilk örnekte tüm öğelerin flex-grow değerinin 1 olarak ayarlandığını görüyoruz böylelikle eşit şekilde bir boyut dağılımını görüyoruz ama ikinci örnekte 2.elamanın flex-grow değer 7 olduğundan diğer elemanlara göre 7 kat daha büyük gözükmesi sağlanmış. 3.örnekte ise 6.elemanın flex-grow değerinin 3 ve 13.elemanın flex-grow değeri 5 olarak ayarlandığını görüyoruz.

flex-shrink

Flex Shrink 1

flex-grow’un tam tersi yöntemle çalışmaktadır 5.elemanın flex-shrink değeri 7 olarak belirlendiğinde 1/7 oranında daraltılmış şekilde gösterimi sağlanır.

Flex Shrink 2

flex özelliğinin değerine kısayoldan direkt olarak flex-grow flex-shrink ve flex-basis değerlerini tanımlayarak kullanabilirsiniz.

order

Order özelliğini kullanarak elemanların sıralamasını yeniden düzenleyebilirsiniz.

Flex Order

justify-items

Justify Items

Flex box kodlarının çıktısını direkt web üzerinde görmek için http://www.csstutorial.org/flex-both.html adresine gözatabilirsiniz.

Ayrıca interaktif olarak sizi kodlama yapmaya yönlendirerek flex’i öğrenmenizi sağlatan https://flexboxfroggy.com/ sitesine de gözatmanızı öneririm. React native ile ilgili en son gelişmeleri kaçırmamak için https://facebook.github.io/react-native/blog/ adresini muhakkak sık sık ziyaret edin.


📚 İlgilenebileceğiniz Bazı Makaleler

📚 Kaynaklar

  • https://facebook.github.io/react-native/docs/getting-started
  • https://facebook.github.io/react-native/blog/

✏️ Lütfen olumlu-olumsuz tüm görüşlerinizi bana yorum yada mail yolu ile iletmeyi ihmal etmeyin.

🔗 Sosyal medya kanallarından makaleyi paylaşarak destek olursanız çok sevinirim.

👋 Bir sonraki makalede görüşmek dileğiyle.

React native kılavuzu, 2020 react native kılavuzu, en güncel react native kılavuzu, güncel react native kılavuzu, react native kılavuzu, React Native Kılavuzu

Bunlar da hoşunuza gidebilir...

2 Cevaplar

  1. 4 Haziran 2020

    […] React Native Kılavuzu […]

  2. 16 Haziran 2020

    […] React Native Kılavuzu […]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir