Table of Contents
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 })}
Navigator Tab
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 .
Navigator Laci
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.
Navigator Bersarang
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]].