React Native ile Mobil Uygulama Geliştirme Konu Anlatımı
React Native ile mobil uygulama geliştirme, JavaScript ve React kullanarak hem iOS hem de Android platformları için aynı anda yüksek performanslı ve yerel (native) görünümlü mobil uygulamalar üretme sürecidir. Günümüzde şirketlerin maliyetleri düşürmek ve geliştirme sürecini hızlandırmak için en çok tercih ettiği teknolojilerden biri olan React Native, modern yazılım dünyasının vazgeçilmez bir parçası haline gelmiştir. Bu teknoloji sayesinde geliştiriciler, her iki platform için ayrı ayrı kod yazmak yerine, tek bir kod tabanı üzerinden her iki dünyada da çalışan güçlü uygulamalar inşa edebilirler.
- React Native mimarisinin temel çalışma mantığını ve avantajlarını anlayacaksınız.
- Geliştirme ortamını hazırlayarak ilk mobil uygulamanızı oluşturmayı öğreneceksiniz.
- Temel bileşenler (View, Text, Image) ile arayüz tasarlama becerisi kazanacaksınız.
- State ve Props kavramlarını kullanarak dinamik veri yönetimini kavrayacaksınız.
- Flexbox ile mobil cihazlara uygun duyarlı (responsive) tasarımlar yapabileceksiniz.
- React Native, Facebook (Meta) tarafından geliştirilen açık kaynaklı bir çerçevedir (framework).
- Uygulamalar tamamen JavaScript ile yazılır ancak çıktı olarak gerçek yerel bileşenler kullanılır.
- “Bir kez yaz, her yerde çalıştır” felsefesini benimser.
- Büyük topluluk desteği ve geniş kütüphane ekosistemine sahiptir.
React Native Nedir ve Neden Tercih Edilir?
React Native, mobil uygulama dünyasında devrim yaratan bir teknolojidir. Geleneksel yöntemlerde bir iOS uygulaması için Swift veya Objective-C, bir Android uygulaması için ise Java veya Kotlin bilmeniz gerekirdi. Ancak React Native, web geliştiricilerinin aşina olduğu JavaScript dilini kullanarak bu iki farklı dünyayı birleştirir. Bu durum, öğrenme eğrisini düşürürken geliştirme hızını iki katına çıkarır.
React Native’in en büyük avantajlarından biri, hibrit uygulamaların aksine, kullanıcıya gerçek bir yerel uygulama deneyimi sunmasıdır. Web tabanlı teknolojiler (WebView) kullanmak yerine, cihazın kendi arayüz bileşenlerini çağırır. Bu da uygulamanın takılmadan, akıcı bir şekilde çalışmasını sağlar. Ayrıca “Hot Reloading” özelliği sayesinde, kodda yaptığınız değişiklikleri uygulamayı yeniden başlatmadan anında görebilirsiniz.
React Native Çalışma Mantığı: Köprü (Bridge) Mekanizması
React Native’in nasıl çalıştığını anlamak, performanslı uygulamalar geliştirmek için kritiktir. JavaScript kodu ile cihazın yerel işletim sistemi (iOS/Android) arasında bir “Köprü” (Bridge) bulunur. JavaScript tarafında yazdığınız mantıksal işlemler bu köprü üzerinden geçerek yerel bileşenlere dönüştürülür.
Örneğin, siz kodunuzda bir buton oluşturduğunuzda, React Native bu isteği köprü üzerinden gönderir. Android tarafında bu bir “Android Button” nesnesine, iOS tarafında ise bir “UIButton” nesnesine dönüşür. Bu sayede uygulama, her iki platformda da o platformun kendi kurallarına göre görünür ve davranır. Bu mimari, uygulamanın donanım özelliklerine (kamera, GPS, Bluetooth) doğrudan erişebilmesini de kolaylaştırır.
| Özellik | React Native | Native (Swift/Kotlin) | Hibrit (WebView) |
|---|---|---|---|
| Geliştirme Hızı | Çok Hızlı | Yavaş | Hızlı |
| Performans | Yüksek | En Yüksek | Düşük |
| Kod Paylaşımı | %80 – %90 | Yok | %100 |
Geliştirme Ortamının Kurulması
React Native ile uygulama geliştirmeye başlamak için iki ana yol vardır: Expo ve React Native CLI. Yeni başlayanlar için Expo, kurulum gerektirmeyen ve hızlıca kod yazmaya olanak tanıyan harika bir araçtır. Profesyonel projelerde ise daha fazla kontrol sağlayan React Native CLI tercih edilir.
Geliştirme yapabilmek için bilgisayarınızda Node.js, Java Development Kit (JDK) ve Android Studio (veya Mac kullanıyorsanız Xcode) yüklü olmalıdır. Bu araçlar, yazdığınız kodun bir mobil cihaza veya simülatöre aktarılmasını sağlar. Çevre değişkenlerinin (Environment Variables) doğru ayarlanması, kurulum sürecindeki en önemli adımdır.
Temel Bileşenler (Core Components)
React Native’de ekranı oluşturmak için önceden tanımlanmış bileşenler kullanılır. HTML’deki div, span ve p etiketlerinin yerini burada View, Text ve Image gibi bileşenler alır. Bu bileşenler, React Native kütüphanesinden içe aktarılarak kullanılır.
- View: Diğer bileşenleri içine alan bir kapsayıcıdır. Ekran düzenini oluşturmak için kullanılır (HTML’deki div gibi).
- Text: Ekranda yazı göstermek için kullanılan tek bileşendir. Tüm metinler bu etiket içine yazılmalıdır.
- Image: Yerel veya uzak sunucudaki resimleri görüntülemek için kullanılır.
- ScrollView: Ekran içeriği telefonun boyutunu aştığında kaydırma özelliği sağlar.
- TextInput: Kullanıcıdan metin girişi almak için kullanılan form elemanıdır.
Aşağıdaki kod parçası, bir başlık ve bir açıklama metni içeren basit bir görünümü temsil eder:
<View>
<Text>Hoş Geldiniz!</Text>
<Text>Bu benim ilk React Native uygulamam.</Text>
</View>
State ve Props ile Veri Yönetimi
Mobil uygulamalar dinamiktir; kullanıcı bir butona bastığında veya internetten veri geldiğinde ekranın güncellenmesi gerekir. Bu güncellemeleri yönetmek için State ve Props kavramlarını kullanırız. State, bir bileşenin kendi içinde tuttuğu ve zamanla değişebilen verilerdir. Örneğin, bir sayacın o anki değeri state içinde saklanır.
Props ise, bir üst bileşenden alt bileşene aktarılan verilerdir. Props’lar salt okunurdur, yani alt bileşen kendisine gelen prop değerini doğrudan değiştiremez. Bu yapı, verinin uygulama içinde tek bir yönde akmasını sağlayarak karmaşıklığı önler. React’ın kalbi olan bu sistem, uygulamanın sadece değişen kısımlarının yeniden çizilmesini sağlayarak performansı artırır.
Flexbox ile Tasarım ve Düzen
Mobil cihazlar farklı ekran boyutlarına sahiptir. Uygulamanızın hem küçük bir iPhone SE’de hem de büyük bir Android tablette güzel görünmesi gerekir. React Native, bu sorunu çözmek için CSS’ten aşina olduğumuz Flexbox sistemini kullanır. Flexbox, elemanların ekrana nasıl yayılacağını ve nasıl hizalanacağını belirler.
Varsayılan olarak React Native’de tüm View bileşenleri dikey (column) düzendedir. “flexDirection”, “justifyContent” ve “alignItems” gibi özellikler kullanılarak elemanlar yatayda veya dikeyde ortalanabilir, aralarına boşluk bırakılabilir veya ekranın tamamını kaplamaları sağlanabilir. Stil işlemleri için ise JavaScript nesneleri kullanan “StyleSheet” kütüphanesi tercih edilir.
Tek bir ekrandan oluşan bir mobil uygulama pek mümkün değildir. Kullanıcıların giriş ekranından ana sayfaya veya ürün detay sayfasına geçebilmesi gerekir. React Native’de bu işlem için en yaygın kullanılan kütüphane “React Navigation”dır. Bu kütüphane, Stack, Tab ve Drawer gibi farklı navigasyon tipleri sunar.
Stack Navigation, ekranları bir yığın gibi üst üste koyar. Kullanıcı geri butonuna bastığında en üstteki ekran kaldırılır ve bir önceki ekrana dönülür. Tab Navigation ise ekranın altında veya üstünde bulunan sekmeler aracılığıyla geçiş yapmayı sağlar. Navigasyon yapısını doğru kurmak, kullanıcı deneyimi (UX) açısından hayati önem taşır.
- React Native’in “Bridge” mekanizması ne işe yarar?
- View ve Text bileşenleri arasındaki temel fark nedir?
- Bir bileşenin verisi değiştiğinde ekranın otomatik güncellenmesini sağlayan yapı hangisidir?
- Flexbox sisteminde elemanları yatayda ortalamak için hangi özellik kullanılır?
- Expo ve React Native CLI arasındaki temel fark nedir?
Öğrendiklerinizi Pekiştirin
React Native dünyasına adım atmak, sadece bir kodlama dili öğrenmek değil, aynı zamanda mobil kullanıcı alışkanlıklarını ve platform standartlarını anlamaktır. Bu yolculukta başarılı olmanın sırrı bolca pratik yapmaktır. Kendi projelerinizi hayata geçirmeye çalışırken hatalarla karşılaşmanız çok normaldir; bu hatalar aslında en büyük öğretmenlerinizdir. Dokümantasyonu okuma alışkanlığı kazanmak ve topluluk forumlarını takip etmek sizi profesyonel bir geliştirici yapacaktır.
- Platform Desteği: Tek kodla hem iOS hem de Android uygulamaları geliştirilebilir.
- Performans: Yerel bileşenler kullanıldığı için hibrit uygulamalardan daha hızlıdır.
- Esneklik: JavaScript ve React bilgisiyle güçlü mobil çözümler üretilebilir.
- Tasarım: Flexbox ile her ekran boyutuna uygun tasarımlar yapılabilir.
- Ekosistem: Geniş kütüphane desteği sayesinde karmaşık özellikler kolayca eklenebilir.



