CodeBlanks Logo Icon CodeBlanks

Birleştirme

Tüm parçaları birleştirerek çalışan bir final uygulaması yazarsın.

Details ekranı ekle

Son adımda bir DetailsScreen ekleyeceğiz ve HomeScreen'den oraya geçiş yapacağız. DetailsScreen, route prop'undan itemNo parametresini okur ve bir <Text> ile gösterir. Bir <Button> ile navigation.goBack() çağrılarak geri dönülür.

HomeScreen'e bir Button ekleriz: basıldığında navigation.navigate('Details', { itemNo: 1 }) çağrılır. Stack.Navigator içine <Stack.Screen name="Details" component={DetailsScreen} /> ekleriz. Böylece uygulama tamamlanır: ürün ekleyebilir, detaya geçebilir ve geri dönebilirsin.

Uygulama Sıra sende: Details ekranı ve geçiş

Bir DetailsScreen bileşeni ekle: route ve navigation prop'larını alsın, route.params'tan itemNo'yu okusun, bir <Text> ile göstersin ve bir <Button> ile navigation.goBack() çağırsın. HomeScreen'e bir Button ekle: onPress'inde navigation.navigate('Details', { itemNo: 1 }) çağrılsın. Stack.Navigator içine <Stack.Screen name="Details" component={DetailsScreen} /> ekle.

Başlangıç kodu

App.js
import { useState } from 'react';
import { View, Text, TextInput, Button, StyleSheet } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';

function HomeScreen({ navigation }) {
  const [text, setText] = useState('');
  const [items, setItems] = useState([]);
  return (
    <View style={styles.container}>
      <Text>Alışveriş Listesi</Text>
      <TextInput value={text} onChangeText={setText} placeholder="Ürün adı" style={styles.input} />
      <Button title="Ekle" onPress={() => setItems([...items, text])} />
      {/* Detay butonu ekle */}
    </View>
  );
}

// DetailsScreen ekle

const Stack = createNativeStackNavigator();

const styles = StyleSheet.create({
  container: { flex: 1, padding: 16 },
  input: { borderWidth: 1, padding: 8, marginBottom: 8 },
});

export default function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator>
        <Stack.Screen name="Home" component={HomeScreen} />
        {/* Details ekranını ekle */}
      </Stack.Navigator>
    </NavigationContainer>
  );
}

Örnek çözüm

App.js
import { useState } from 'react';
import { View, Text, TextInput, Button, StyleSheet } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';

function HomeScreen({ navigation }) {
  const [text, setText] = useState('');
  const [items, setItems] = useState([]);
  return (
    <View style={styles.container}>
      <Text>Alışveriş Listesi</Text>
      <TextInput value={text} onChangeText={setText} placeholder="Ürün adı" style={styles.input} />
      <Button title="Ekle" onPress={() => setItems([...items, text])} />
      <Button title="Detay" onPress={() => navigation.navigate('Details', { itemNo: 1 })} />
    </View>
  );
}

function DetailsScreen({ route, navigation }) {
  const { itemNo } = route.params;
  return (
    <View style={styles.container}>
      <Text>Ürün no: {itemNo}</Text>
      <Button title="Geri" onPress={() => navigation.goBack()} />
    </View>
  );
}

const Stack = createNativeStackNavigator();

const styles = StyleSheet.create({
  container: { flex: 1, padding: 16 },
  input: { borderWidth: 1, padding: 8, marginBottom: 8 },
});

export default function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator>
        <Stack.Screen name="Home" component={HomeScreen} />
        <Stack.Screen name="Details" component={DetailsScreen} />
      </Stack.Navigator>
    </NavigationContainer>
  );
}

Birleştirme

Projenin sonuna geldin! Şimdi tüm parçalar bir araya geldi: View ve Text ile iskelet, TextInput ile kullanıcı girdisi, useState ile durum yönetimi, Button ile etkileşim ve navigation ile ekran geçişleri.

Bu proje, başlangıç seviyesinin özetidir. Öğrendiğin her kavram gerçek bir uygulamada kullanıldı: ürün ekleme, detay görüntüleme ve geri dönme. Bundan sonraki seviyede daha karmaşık durum yönetimi, liste optimizasyonu ve veri çekme konularını göreceksin.

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 navigate ile params nasıl geçilir?

App.js
navigation.navigate('Details', ?)
  • { itemNo: 1 } Doğru cevap
  • 1
  • 'itemNo'
  • [1]

Açıklama: params bir nesne olarak { itemNo: 1 } geçilir.

2 Eşleştir: kavram ve kullanımı

Kavram Anlamı
navigate ekran açma
goBack geri dönme
route.params veri okuma

3 Boşluğu doldur: geri dön

Soru
navigation.____();
Cevap
navigation.goBack();

Açıklama: goBack ile önceki ekrana dönersin.

Başlangıç bölümündeki tüm dersler