Navigation
- React Native kursu
- Başlangıç
- Ders 115/116
- 6 dk
Stack navigation ile iki ekranı birleştirirsin.
Navigation ekle
Uygulama artık ürün ekleyebiliyor. Şimdi navigasyon ekleyerek ileride bir detay ekranına geçiş yapacağız. NavigationContainer'ı @react-navigation/native'den, createNativeStackNavigator'ı @react-navigation/native-stack'ten içe aktarırız.
Mevcut App bileşenini HomeScreen olarak yeniden adlandırırız. Yeni bir App bileşeni tanımlar ve içine NavigationContainer ile Stack.Navigator koyarız. Stack.Screen ile HomeScreen'i kaydederiz. Böylece uygulama bir navigasyon yığınına sahip olur.
Stack.Screen kaydı
Stack.Navigator içine her ekran için bir Stack.Screen koyarsın. Her Stack.Screen, name (ekran adı) ve component (bileşen) öznitelikleri alır. İlk kaydedilen ekran, uygulama açıldığında gösterilen başlangıç ekranıdır.
<Stack.Navigator>
<Stack.Screen name="Home" component={HomeScreen} />
</Stack.Navigator>Burada HomeScreen bileşeni Home adıyla kaydedilir. İleride navigation.navigate('Home') çağrısıyla bu ekrana dönebiliriz. name değeri, navigasyon çağrılarında kullanılan anahtardır.
Uygulama Sıra sende: navigasyon kur
NavigationContainer'ı @react-navigation/native'den, createNativeStackNavigator'ı @react-navigation/native-stack'ten içe aktar. Stack değişkenine createNativeStackNavigator() ata. Yeni bir App bileşeni yaz; içine <NavigationContainer> ve <Stack.Navigator> koy, <Stack.Screen name="Home" component={HomeScreen} /> ekle.
Başlangıç kodu
import { useState } from 'react';
import { View, Text, TextInput, Button, StyleSheet } from 'react-native';
// NavigationContainer ve Stack içe aktar
function HomeScreen() {
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])} />
</View>
);
}
const styles = StyleSheet.create({
container: { flex: 1, padding: 16 },
input: { borderWidth: 1, padding: 8, marginBottom: 8 },
});
// App'i NavigationContainer ve Stack ile sar
export default function App() {
return null;
}Örnek çözüm
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() {
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])} />
</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.Navigator>
</NavigationContainer>
);
}Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Eşleştir: bileşen ve görevi
| Kavram | Anlamı |
|---|---|
NavigationContainer |
kök sarmalayıcı |
Stack.Navigator |
ekran sarmalayıcı |
Stack.Screen |
tek ekran |
2 NavigationContainer ne işe yarar?
<NavigationContainer>...</NavigationContainer>- Metin görüntüler
- Stil tanımlar
- Veri saklar
- Kök navigasyon sarmalayıcıdır Doğru cevap
Açıklama: NavigationContainer kök navigasyon sarmalayıcıdır.
3 Boşluğu doldur: NavigationContainer içe aktarma
import { ____ } from '@react-navigation/native';
import { NavigationContainer } from '@react-navigation/native';
Açıklama: NavigationContainer kök sarmalayıcıdır.