Pengantar Perjanjian Lama

React Pribumion memungkinkan membangun aplikasi mobile asli dengan JavaScript dan React. Aspek kritis pengembangan aplikasi bergerak adalah navigasi: membimbing pengguna melalui layar dan fitur yang berbeda tanpa mulus. React Navigas[ adalah yang paling populer, pustaka berpemandu-komunitas untuk menerapkan navigasi dalam aplikasi React Pribumi. Ini menyediakan API deklaratif, mendukung stack, tab, dan navigator laci, dan menangani gerakan dan transisi spesifik platform. Panduan ini mencakup segala sesuatu dari instalasi ke pola penghubung dan aliran yang canggih.

Kesukaan dan Pemasangan yang Lebih Penting

ifextare: Jika Anda mulai segar, gunakan CLI atau Expo React Pribumi. Navigasi reak bekerja dengan keduanya.

Pasang Paket Teras

Pasang paket yang diperlukan melalui npm atau benang. Pustaka inti dan dependensi utamanya adalah:

npm install @react-navigation/native

Kemudian pasang pustaka pendukung yang React Navigas bergantung pada manajemen layar dan penanganan area aman:

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

NAME jika Anda menggunakan Expo, perpustakaan ini sudah disertakan. Untuk proyek-proyek Pribumi React telanjang, ikuti petunjuk pemautan dalam dokumentasi resmi untuk memastikan modul asli dihubungkan dengan benar (autolinking handle ini untuk React Pribumi 0,60+).

\"A Pasang Navigator\"

Navigasi React avigasi menawarkan berbagai navigator.]native stack navigator disarankan untuk kebanyakan kasus penggunaan:

npm install @react-navigation/native-stack

Navigator lain seperti bottom tabs dan drawer dipasang secara terpisah:

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

Konsep Inti

Navigasi Navigasi Reak Dibangun sekitar tiga blok bangunan utama:

  • [[GastronazarFLT:0]]NavigationContainer ⁇ pembungkus terluar yang mengelola pohon dan negara navigasi.
  • [[Navigator ]]Navigator]] ⁇ komponen yang mendefinisikan pola navigasi (stack, tab, laci).
  • [[CANDIANCELT:0]]Screens[ ⁇ komponen individu yang mewakili suatu tampilan atau halaman dalam aplikasi.

Setiap navigasi harus dibungkus dalam . Kontainer ini biasanya ditempatkan pada akar komponen aplikasi.

Memutar sebuah Navigator Berkan Diri

Para navigator stack mengelola tumpukan layar yang terakhir-pertama.Ia menggunakan animasi dan gerak tubuh transisi platform asli secara baku.

Pertama, impor modul yang diperlukan:

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

Buat sebuah buku panduan:

const Stack = createNativeStackNavigator();

Takrifkan pencerna di dalam komponen App Anda:

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

Setiap hewan membutuhkan alat peraga (digunakan untuk navigasi) dan alat peraga (komponen React untuk dirender).

Co Mencipta Layar dan Navigasi

Layar-skrin efol adalah komponen React standar. Mereka menerima dua alat peraga penting: dan . Objek menyediakan metode untuk bergerak antar layar. Di bawah ini adalah layar Home yang khas:

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>
 );
}

Layar Detailsnya tidak perlu menggunakan alat peraga navigasi kecuali perlu untuk menavigasi lebih lanjut.

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

Metode Navigasi Navigasi Navigasi

Navigasi React UGN menyediakan beberapa metode melalui prop:

  • [[EfleksifT:0]]navigate(name, params) ⁇ pindah ke layar, menggunakan kembali suatu kejadian yang ada jika ada dalam tumpukan.
  • - - - [[- - - - - [[ - - valsh [[ - ]] - push( nama, params)[[ FLT:1]] selalu mendorong layar baru ke tumpukan, walaupun layar yang sama sudah berada di dalam tumpukan.
  • ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • [[EfolfLT:0]]replace(name, params) ⁇ menggantikan layar saat ini dengan yang baru, menghapus arus dari sejarah.
  • ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

Misalnya, untuk mendorong contoh baru dari layar Detail dan parameter lulus:

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

Parameter Passing Parameter yang Diatara Layar

Data morfone dapat dilewatkan ke layar melalui argumen kedua untuk atau .Layar penerimaan mengakses parameter tersebut melalui .

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

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

Nilai parameter default tool tip

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

Pilihan Navigasi Mengkonfigur

Setiap layar dapat menyesuaikan header, ikon tab, label laci, dll, menggunakan alat peraga pada atau alat peraga pada navigator.

Pengasamanan Pengepala

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

Pilihan Dinamika Dinamika dapat ditetapkan menggunakan fungsi yang menerima :

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

Navigasi tab adalah umum untuk seksi aplikasi tingkat atas. Pasang navigator tab bawah:

npm install @react-navigation/bottom-tabs

ifrica Ciptakan sebuah tab navigator dan gabungkan dengan tumpukan Anda:

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>
 );
}

Anda dapat bersarangkan tab navigator di dalam sebuah navigator stack atau sebaliknya. Suaikan ikon tab menggunakan alat dengan .

Seorang navigator laci slide laci dari kiri, mengungkapkan item navigasi. Pasang:

npm install @react-navigation/drawer

Contoh sebolan:

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>
 );
}

Use untuk membuka dan menutup laci secara programmatik.

Aplikasi kompleks olympical sering kali sarang navigator (misalnya, navigator tab di dalam sebuah navigator tumpukan). Mengaktifkan kembali Navigasi menangani sarang dengan anggun. Alat peraga yang disediakan untuk layar manapun dapat memanggil metode pada navigator induk jika diperlukan. Gunakan untuk mengakses metode navigator induk.

Contoh: Setumpuk yang berisi navigator tab dan layar pengaturan:

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

Hubungan yang Penuh dan Dalam

Navigasi React ifdy mendukung linking mendalam untuk menangani URL yang membuka layar spesifik. Atur prop pada :

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

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

Kemudian, maniffine menangani URL masuk. Ini memungkinkan fitur seperti push notification link ke layar tertentu.

Aliran Otentikasi Agonal

Banyak aplikasi yang membutuhkan navigasi bersyarat berdasarkan keadaan autentikasi. Pola umum adalah dengan menukar navigator pada level root:

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

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

Sebagai alternatif, gunakan satu tumpukan dengan layar bersyarat.

Prestasi dan Praktek Terbaik

  • Use native stack navigator (bukan ) untuk kinerja dan transisi native yang lebih baik.
  • UIDeng minimalkan jumlah layar yang dimount sekaligus. Aktifkan kembali Navigasi unmount layar tersembunyi secara default untuk peninjau stack, tetapi untuk navigasi tab, anda dapat mengkonfigurasi pemuatan malas.
  • morfex hanya melewati data primitif melalui parameter untuk menghindari masalah serialisasi.
  • Use atau untuk komponen layar yang sering dirender ulang.
  • Mengeluarkan komputasi berat selama transisi navigasi; offload bekerja dengan .
  • Selalu saja dia handle acara untuk prompt perubahan yang tidak disimpan.

Kekecualian Kesimpulan

Navigasi React Unaid menyediakan cara yang intuitif, dapat disesuaikan, dan dapat melakukan upaya untuk mengelola navigasi dalam aplikasi Pribumi React. Dengan menguasai stack, tab, laci, dan navigator bersarang, bersama dengan parameter lewat, menghubungkan secara mendalam, dan autentikasi mengalir, Anda dapat membangun pengalaman mobile yang kuat. Untuk rincian lebih lanjut, mengacu pada official React Navigation dokumentasi dan Layankan Panduan Navigasi Asli]. Juga mempertimbangkan pembacaan artikel komunitas pada Navigasi terbaik[TFLTFL:5] dan panduan implementasi Anda]].