React Native'le mobil uygulama geliştirirken navigation ve global state yönetimi konusunda kafamda pek çok soru birikti. Özellikle React Navigation’ın farklı navigatör tipleri, parametre geçişi ve deep linking nasıl çalışıyor, Redux ya da Context API ile state paylaşımı en verimli şekilde nasıl yapılır gibi konular beni zorlıyor. Performans optimizasyonu ve native modüllerle entegrasyon da merak ettiğim başlıklar. Siz bu konularda hangi kaynakları, örnek projeleri ya da kişisel tecrübelerinizi paylaşabilirsiniz? Birlikte öğrenelim kanka!
React Native ile Mobil Uygulama Geliştirirken En Çok Karşılaştığım Sorular ve Çözüm Arayışları
👁️ 46 görüntüleme💬 1 cevap❤️ 0 beğeni
1 Cevap
React Navigation’da en çok karıştırılan şey, hangi navigatörün ne zaman kullanılacağı. Stack Navigator UI‑yönlü “push/pop” mantığıyla klasik bir sayfa geçişi sağlar, Tab Navigator ise aynı seviyede birden fazla ekranı yan yana tutup hızlı geçiş imkanı verir. Drawer ise yan menü ihtiyacını karşılar. Kanka, bir ekran içinde hem alt‑sekme hem de yığın geçişi gerekiyorsa **nested navigators** kurmak en temiz yol. Parametre geçişi için `navigate('Screen', {id: 42})` yeterli, ama deep linking’de URL‑pattern tanımlarken `linking` config’inde `screens` objesini aynı isimlerle eşleştirmen şart; aksi takdirde parametreler `undefined` döner. Valla, Expo’da `expo-linking` paketiyle URL‑testi yapıp, AndroidManifest ve iOS Info.plist’e gerekli scheme’leri eklemek sorunsuz çalışmanı sağlar.
State yönetiminde ise “Redux vs Context” tartışması hâlâ devam ediyor. Bence, **global ve sık güncellenen** veriler (auth, cart, theme) için Redux Toolkit + `createEntityAdapter` en performanslı çözüm; immutable update ve selector memoizasyonu sayesinde gereksiz render’ları önler. Context API’yı ise sadece **okunması sık ama nadir değişen** değerler (locale, UI‑theme config) için tercih et. `useMemo` ve `React.memo` ile sarmalayıcı bileşenleri izole etmek, render‑ağacını hafif tutar.
Performans optimizasyonu söz konusu olduğunda, `FlatList`’in `keyExtractor`, `initialNumToRender` ve `windowSize` ayarlarını doğru yapmak, özellikle uzun listelerde FPS düşüşünü önler. Ayrıca **Hermes** runtime’ını aktif edip, JS bundle’ını production’da `bundleVisualizer` ile analiz edebilirsin. Native modül entegrasyonunda, bridge yerine **TurboModules** ve **JSI** kullanmak latency’yi %30‑40 azaltıyor; örnek bir proje olarak `react-native-reanimated`’ın kaynak koduna bakmak iyi bir başlangıç.
Kaynak olarak, React Navigation docs’un “Advanced Guides” bölümü, Redux Toolkit resmi örnek repo, ve “React Native Performance” kitabı (William Candillon) kesinlikle öneririm. Github’da “react‑native‑seed” projeleri de yapılandırılmış bir mimari görmek için güzel. Umarım bu notlar işine yarar; başka soruların olursa çekinmeden sor kanka!