React Navigation, React Native topluluğu tarafından Javascript ortamında yazılmış ve kullanımı kolay bir navigasyon çözümüdür. Bu bölüm, React Navigation kurulumunu içerir. (Örnekler, React Navigation 3.x’e göredir, özellikle internetten bulduğunuz bir örneğin kaç versiyonuna göre olduğuna dikkat edin.)
Öncelikle Native bir proje yaratalım. Eğer Expo kullanırsanız, başlangıçta boş proje mi yoksa navigation içeren proje mi diye soruyor. Eğer navigation içeren proje derseniz, direkt React Navigation’ını kuruyor. Bu bölümde tamamen boş bir projede React Navigation nasıl kuracağımız anlatılacaktır. Öncelikle boş bir proje oluşturalım.
1 2 3 |
react-native init ProjeIsmi … cd ProjeIsmi |
ProjeIsmi adında klasörümüz oluştuktan ve kurulum bittikten sonra klasöre gidelim. React Navigation kütüphanesini npm veya yarn üzerinden kurabiliriz.
1 2 3 |
yarn add react-navigation # veya npm ile # npm install --save react-navigation |
Kurulum bittikten sonra react-native-gesture-handler kuralım.
1 2 3 |
yarn add react-native-gesture-handler # veya npm ile # npm install --save react-native-gesture-handler |
Native bağmlılıkları dosyalara ekleyelim.
1 |
react-native link react-native-gesture-handler |
Android için kurulum yapıyorsanız, MainActivity.java manuel bir şekilde ek kodlar yazmanız gerekecektir. Bu dosya Android/app/scr/main/java/com/ProjeIsmi dizini içindedir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
package com.hellonavigation; import com.facebook.react.ReactActivity; import com.facebook.react.ReactActivityDelegate; import com.facebook.react.ReactRootView; import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView; public class MainActivity extends ReactActivity { @Override protected String getMainComponentName() { return "HelloNavigation"; } @Override protected ReactActivityDelegate createReactActivityDelegate() { return new ReactActivityDelegate(this, getMainComponentName()) { @Override protected ReactRootView createRootView() { return new RNGestureHandlerEnabledRootView(MainActivity.this); } }; } } |
İşaretli satırları ekledikten sonra emulator’ünüz açıkken “react-native run-android” diyerek çalıştırmayı deneyin. Ben bu bölümde bir hata ile karşılaştım. (Linux ve iOS kullanıcıların hata ile karşılaşmasını beklemiyorum.) Karşılaştığım hata:
1 2 |
settings file 'D:\…\HelloNavigation\android\settings.gradle': 3: unexpected char: '\' @ line 3, column 133. s\react-native-gesture-handler\android') |
Aslında hata basit, yine de stackoverflow’dan baktım. “\” beğenmemiş. Bu dosyaya gidip üçüncü satıra baktığımda:
1 |
project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '..\node_modules\react-native-gesture-handler\android') |
“\” ları “/” çevirdim. Yeni hali:
1 |
project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android') |
Kaydedin ve tekrar çalıştırmayı deneyin, eğer proje sonucunu emulator’de gördüğü iseniz çalışmaya devam edebilirsiniz.