Giriş Giriş Giriş

React Navigation) Yerel mobil uygulamaları JavaScript ve React Navigation) ile inşa etmek için en popüler, topluluk odaklı kütüphanedir.Bu, bir declaratif API'nin kritik bir yönüdür, çöp, sekme ve çekmeceler aracılığıyla kullanıcılara rehberlik eder ve platforma özel jestler ve geçişleri idare eder.

Önlemler ve Kurulum

Reaktörü kullanmadan önce, bir Reaksiyon Yerli projesinin ilk olarak yapılmasını sağlayın. Taze başlıyorsanız, Reaks Yerli Külatörü hem de Expo. Reaktör her ikisi ile çalışır.

Yükleme Core Paketleri

Gerekli paketleri npm veya iplik aracılığıyla yükleyin. Ana kütüphane ve ana bağımlılıkları şunlardır:

npm install @react-navigation/native

Sonra Reakre Navigation'ın ekran yönetimi ve güvenli alan kullanımı için bağlı olan kütüphaneleri yüklemek:

npm install react-native-screens react-native-safe-area-context

Expo kullanıyorsanız, bu kütüphaneler zaten dahil edilmiştir.Açık Reaks Yerli projeler için, yerel modüllerin doğru şekilde bağlantı kurması için resmi belgelerdeki bağlantı talimatları takip edin (otolinking handles this for React Native 0.60+).

Bir Navigator yükleme

Reaktör birden çok navigatör sunar.TheurFLT:0Connative Chip navigator[DDK:1) çoğu kullanım için önerilir:

npm install @react-navigation/native-stack

Diğer navigatörler gibi:0) alt sekmeler ve )drawer[DDDÜ:3) ayrı olarak kurulur:

npm install @react-navigation/bottom-tabs
npm install @react-navigation/drawer

Core Concepts

Reaks Navigation yaklaşık üç ana bina bloğu etrafında inşa edilmiştir:

  • [FONT:0]NavigationContainer[Döntgen: 1) – navigasyon ağacı ve devleti yöneten dış sarma.
  • [FONT=0)Navigators - navigasyon modelini tanımlayan bileşenler (stack, sekme, çekmece).
  • [FONT:0]Screens[[[Dönetici: 1 ) - Uygulamada bir görüntü veya sayfayı temsil eden bireysel bileşenler.

Her navigasyon kurulumu birİLFLT:4'te kapatılmalıdır. Bu konteyner genellikle uygulama bileşeninin köküne yerleştirilir.

Bir Stack Navigator

Temp navigator, son derece ilk ekranların bir yığınını yönetiyor. Ana platformun geçiş animasyonlarını ve jestlerini varsayılan olarak kullanıyor.

İlk olarak, gerekli modüller:

import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';

Bir yığın navigator örneği oluşturun:

const Stack = createNativeStackNavigator();

App bileşeninizin içinde navigatoru tanımlayın:

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

Her ne kadar iyi bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir şekilde, bir araya gelmeleri gerekir.

Ekranlar ve Navigating

Ekranlar standart reaktör bileşenleridir. İki önemli sent alırlar:ETHFLT:11). ve [[Ücretsiz: 9) nesne ekranlar arasında hareket etmek için yöntemler sunar.

function HomeScreen({ navigation }) {
 return (
 <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
 <Text>Home Screen</Text>
 <Button
 title="Go to Details"
 onPress={() => navigation.navigate('Details')}
 />
 </View>
 );
}

Detaylar ekranı, daha fazla gezinmesi gerekmediği sürece navigasyon teklifini kullanma ihtiyacı değildir.

function DetailsScreen({ route }) {
 return (
 <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
 <Text>Details Screen</Text>
 </View>
 );
}

Reaks Navigation, [[Şerefli: 16.000|Sürekli/Üyetimli) bir dizi yöntem sunar:

  • [FONT:0]navigate (isim, params))[0)[tr|kahkahada var olup olmadığının bir ekrana hareket eder.
  • [FONT:0]push (isim, params)) - her zaman yeni bir ekranı yığınına iter, aynı ekran zaten yığınında olsa bile.
  • [FONT:0)goBack()[[Dön 1: 1 ) - önceki ekrana yığının içinde gidin.
  • [FONT:0] Yer(isim, params)) - Mevcut ekranı yeni bir tane ile değiştirin, tarihten mevcut olanı ortadan kaldırır.
  • [FONT:0)[devlet)[Dönetici:0)[Dönetici)[Dönetici)[Dönetici:0))[Dönetici)[Dönetici)[Dönetici:0))[Dönetici:0|Dönerli bir devlet nesnesine tüm navigasyon durumunu sıfırlar.

Örneğin, ayrıntıların ekranını yeni bir örnek zorlamak ve parametreleri geçmek:

navigation.push('Details', { itemId: 42, otherParam: 'anything' });

Ekranlar arasında para kazanmak

Veriler, ikinci argümanla bir ekrana geçilebilir: “ veya [[Döneticileri bu parametreleri ekranlara aşağıdakiler ile erişir.

// In HomeScreen
navigation.navigate('Details', { userId: 123 });

// In DetailsScreen
function DetailsScreen({ route }) {
 const { userId } = route.params;
 return <Text>User ID: {userId}</Text>;
}

Ekran bileşeni üzerinde varsayılan parametre değerleri ayarlayın:

<Stack.Screen
 name="Details"
 component={DetailsScreen}
 initialParams={{ itemId: 0 }}
/>

Her ekran, başlık ikonunu, çekmece etiketini, vb.'yi, [[ŞUYGÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞ

Header Customization

<Stack.Screen
 name="Details"
 component={DetailsScreen}
 options={{
 title: 'Details',
 headerStyle: { backgroundColor: '#f4511e' },
 headerTintColor: '#fff',
 headerTitleStyle: { fontWeight: 'bold' },
 }}
/>

Dinamik seçenekler, [[FONTFLT:28'i alan bir işlev kullanılarak ayarlanabilir:

options={({ route }) => ({ title: route.params.name })}

Tab Navigator

Tab navigasyon üst düzey uygulama bölümleri için yaygındır. alt sekmeleri navigator yükleyin:

npm install @react-navigation/bottom-tabs

Bir sekme navigator oluşturun ve onu çöple birleştirin:

import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';

const Tab = createBottomTabNavigator();

function HomeTabs() {
 return (
 <Tab.Navigator>
 <Tab.Screen name="Feed" component={FeedScreen} />
 <Tab.Screen name="Profile" component={ProfileScreen} />
 </Tab.Navigator>
 );
}

Bir yığın navigatorun içinde veya tersi içinde sekme galerisini kullanabilirsiniz.Şerefli sekme ikonlarını kullanarak özelleştirin.

Çeki Navigator

Bir çekmece navigator soldan bir çekmeceyi kaydırır, navigasyon öğelerini ortaya çıkarır:

npm install @react-navigation/drawer

Örnek kurulum:

import { createDrawerNavigator } from '@react-navigation/drawer';

const Drawer = createDrawerNavigator();

function AppDrawer() {
 return (
 <Drawer.Navigator>
 <Drawer.Screen name="Home" component={HomeScreen} />
 <Drawer.Screen name="Settings" component={SettingsScreen} />
 </Drawer.Navigator>
 );
}

[FONTD: 9) Açık ve kablo programına yakın olarak kullanın.

Nested Navigators

Kompleks uygulamaları genellikle nest navigatörler (örneğin, bir yığın navigator içindeki bir sekme) ile çalışır. Reaktör zarif bir şekilde idare eder.TheyuFLT:37). herhangi bir ekrana sunulan herhangi bir ekrana göre, ebeveyn navigatoruna ihtiyaç duyulursa yöntemler arayabilir.

Örnek: Bir sekme navigator ve bir ayar ekran içeren bir yığın:

function RootStack() {
 return (
 <Stack.Navigator>
 <Stack.Screen name="Main" component={MainTabs} options={{ headerShown: false }} />
 <Stack.Screen name="Settings" component={SettingsScreen} />
 </Stack.Navigator>
 );
}

Linking and Deep Linking

Reaks Navigation, belirli ekranları açık URL'leri ele almak için derin bağlantı sağlar.ŞUygunlukT:40'u yapılandırın: ”

const linking = {
 prefixes: ['myapp://', 'https://myapp.com'],
 config: {
 screens: {
 Home: 'home',
 Details: 'details/:itemId',
 },
 },
};

<NavigationContainer linking={linking}>
 {/* navigators */}
</NavigationContainer>

Sonra gelen URL'leri ele alalım. Bu, belirli bir ekrana bağlantı kurmak gibi özellikler sağlar.

Kimlik Akışları

Birçok uygulama, doğrulama durumuna göre koşullu navigasyon gerektirir. Ortak bir model, navigatoru kök seviyesinde değiştirmektir:

function App() {
 const [isSignedIn, setIsSignedIn] = useState(false);

 return (
 <NavigationContainer>
 {isSignedIn ? <AppNavigator /> : <AuthNavigator />}
 </NavigationContainer>
 );
}

Alternatif olarak, koşullu ekranlarla tek bir yığın kullanın. Sözcülüğü tutmak veya tarihe kadar devlet tutmaktan kaçının.

Performans ve En İyi Uygulamalar

  • Kullanım:0))) Kaynak:0|tamamlayıcı bir yığın navigator[Dönetici:0))) Daha iyi performans ve yerli geçişler için (notizeFLT:44).
  • Bir zamanlar monte edilen ekran sayısını Minik. Reaktöre navigatörler için varsayılan olarak gizli ekranları kapat, ancak sekme navigatörler için, tembel yükleme yapılandırabilirsiniz.
  • Serileştirme sorunları önlemek için parametreler aracılığıyla sadece ilkel verilerle geçin.
  • [[Dörtücükler için veya [[Dördd|s.)
  • navigasyon geçişleri sırasında ağır hesaplamalardan kaçının; Yükler [FONTD: 3] ile çalışır.
  • Her zaman, azar olmayan değişiklikler için olayla başa çık.

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

Reactus, parametre geçişi ile, derin bağlantı ve doğrulama akışları ile birlikte, daha iyi uygulamalar için (Dönderici React Navigation Belgeleri) ve [[Döndericiler, çekmeceler ve nested navigatörler, parametre geçişleri ile birlikte, güçlü mobil deneyimler oluşturabilirsiniz.Daha iyi uygulamalar için) Uygulamalarınızı düzeltmeniz için.).