Expo Router ile Gezinme
Türlendirilmiş rotalar ve derin bağlantılarla dosya tabanlı gezinme için Expo Router'ı kurun.
Expo Router ile Gezinme, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.
Expo Router Nedir?
Expo Router, React Native için dosya tabanlı bir yönlendirme kitaplığıdır (React Navigation üzerine kuruludur). Next.js App Router gibi, dosya yapısı yönlendirme rotalarınızı tanımlar.
Kurulum
Önceden yapılandırılmış Expo Router ile yeni bir Expo projesi oluşturun.
# Create new project:
npx create-expo-app@latest my-app --template tabs
# Or add to existing Expo project:
npx expo install expo-router react-native-safe-area-context react-native-screensDosya Tabanlı Rotalar
app/ dizinindeki dosyalar otomatik olarak rotalara dönüşür. index.tsx kök rotadır, [id].tsx ise dinamik bir segmenttir.
app/
_layout.tsx # root layout (Stack navigator)
index.tsx # → / (home screen)
profile.tsx # → /profile
posts/
_layout.tsx # posts stack layout
index.tsx # → /posts
[id].tsx # → /posts/123 (dynamic)Kök Yerleşim
Kök _layout.tsx, tüm ekranları sağlayıcılarla sarar ve üst düzey gezgini tanımlar.
// app/_layout.tsx
import { Stack } from 'expo-router';
export default function RootLayout() {
return (
<Stack>
<Stack.Screen name="index" options={{ title: 'Home' }} />
<Stack.Screen name="profile" options={{ title: 'Profile' }} />
</Stack>
);
}Link ile Gezinme
Bildirimsel yönlendirme için expo-router içindeki Link bileşenini kullanın; bu kullanım next/link'e benzer.
import { Link } from 'expo-router';
function HomeScreen() {
return (
<Link href="/profile">Go to Profile</Link>
);
}useRouter ile Gezinme
Emir temelli yönlendirme için useRouter() kullanın; yeni rota ekleme, rotayı değiştirme veya program aracılığıyla geri gitme işlemlerini gerçekleştirin.
import { useRouter } from 'expo-router';
function LoginForm() {
const router = useRouter();
async function handleLogin() {
await login();
router.replace('/dashboard');
}
}Dinamik Rotalar
Dinamik bir rota dosyasında rota parametrelerine useLocalSearchParams() ile erişin.
// app/posts/[id].tsx
import { useLocalSearchParams } from 'expo-router';
export default function PostScreen() {
const { id } = useLocalSearchParams<{ id: string }>();
return <PostDetail postId={id} />;
}Sekme Gezinmesi
Alt sekme gezinmesi için bir grup yerleşimi içinde expo-router'dan Tabs kullanın.
// app/(tabs)/_layout.tsx
import { Tabs } from 'expo-router';
export default function TabLayout() {
return (
<Tabs>
<Tabs.Screen name="index" options={{ title: 'Home', tabBarIcon: ({ color }) => <HomeIcon color={color} /> }} />
<Tabs.Screen name="explore" options={{ title: 'Explore' }} />
</Tabs>
);
}Açılır Pencere Ekranları
Stack.Screen seçeneklerinde presentation: 'modal' ayarlayarak bir ekranı açılır pencere olarak gösterin.
// app/_layout.tsx
<Stack.Screen name="modal" options={{ presentation: 'modal', title: 'Settings' }} />
// Navigate to modal:
router.push('/modal');Derin Bağlantılar
Expo Router, derin bağlantıları otomatik olarak işler. URL şemanızı app.json içinde tanımlayın; myapp://posts/123 gibi bağlantılar doğru ekranı açar.
// app.json
{
"expo": {
"scheme": "myapp"
}
}Kimlik Doğrulama Deseni
Kimlik doğrulama durumuna göre kimlik doğrulama ekranlarını veya uygulama sekmelerini koşullu olarak oluşturan bir kök yerleşim kullanın.
// app/_layout.tsx
import { Redirect } from 'expo-router';
function RootLayout() {
const { user } = useAuth();
if (!user) return <Redirect href="/login" />;
return <Stack />;
}Kısa Sınama
/posts/[id] içindeki id gibi dinamik rota parametrelerini hangi Expo Router kancası okur?
Özet
Expo Router, dosya tabanlı yönlendirme kullanır: app/index.tsx → ana sayfa, app/[id].tsx → dinamik rota. Yerleşimleri _layout.tsx içinde tanımlayın, Link veya useRouter() ile gezinin ve parametreleri useLocalSearchParams() ile okuyun.
Sıkça Sorulan Sorular
“Expo Router ile Gezinme” dersi ücretsiz mi?
Evet — “Expo Router ile Gezinme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.
“Expo Router ile Gezinme” dersinde ne öğreneceğim?
Türlendirilmiş rotalar ve derin bağlantılarla dosya tabanlı gezinme için Expo Router'ı kurun. React Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
React Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te React Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Expo Router ile Gezinme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu React Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her React Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- React Native Temel Bileşenleri ve Web DOM
- StyleSheet API'si ve Flexbox ile Stil Verme
- Expo Router ile Gezinme
- Cihaz API'lerine Erişme: Kamera, Konum ve Anlık Bildirimler