Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Điều hướng (Navigation) giữa các màn hình trong React Native


React Navigation là thư viện routing/navigation tiêu chuẩn cho React Native. Hướng dẫn setup **Stack Navigator** (chuyển màn hình dạng chồng - push/pop).

1. Cài đặt packages

# Core
npm install @react-navigation/native @react-navigation/stack

# Dependencies (bắt buộc cho bare workflow)
npm install react-native-screens react-native-safe-area-context react-native-gesture-handler

# iOS only
npx pod-install

Lưu ý: Thêm import 'react-native-gesture-handler'; ở **dòng đầu tiên** của index.js / App.js.

2. Cấu trúc thư mục gợi ý

src/
  screens/
    HomeScreen.js
    AboutScreen.js
  navigation/
    AppNavigator.js
  App.js

3. Tạo màn hình (Screens)

src/screens/HomeScreen.js

import React from 'react';
import { Button, View, StyleSheet, Text } from 'react-native';

const HomeScreen = ({ navigation }) => {
  return (
    
      Màn hình Home
      

src/screens/AboutScreen.js

import React from 'react';
import { View, Text, StyleSheet, Button } from 'react-native';

const AboutScreen = ({ route, navigation }) => {
  const { user } = route.params || {};

  return (
    
      Màn hình About
      Xin chào {user || 'Khách'}!
      

4. Tạo Navigator

src/navigation/AppNavigator.js

import React from 'react';
import { createStackNavigator } from '@react-navigation/stack';
import HomeScreen from '../screens/HomeScreen';
import AboutScreen from '../screens/AboutScreen';

const Stack = createStackNavigator();

export const AppNavigator = () => {
  return (
    
      
       ({ title: `About: ${route.params?.user || ''}` })}
      />
    
  );
};

5. Root App - Wrap NavigationContainer

App.js

import React from 'react';
import 'react-native-gesture-handler'; // QUAN TRỌNG: dòng đầu tiên
import { NavigationContainer } from '@react-navigation/native';
import { AppNavigator } from './src/navigation/AppNavigator';

export default function App() {
  return (
    
      
    
  );
}

6. Chạy ứng dụng

npx react-native run-android
# hoặc
npx react-native run-ios

Các API điều hướng cơ bản

APIMô tả
navigation.navigate('Name', params)Đi đến screen (tạo mới hoặc focus nếu đã có trong stack).
navigation.push('Name', params)Luôn push screen mới lên stack (cho phép duplicate).
navigation.goBack()Quay lại screen trước.
navigation.popToTop()Về screen đầu tiên (root).
navigation.replace('Name', params)Thay screen hiện tại bằng screen mới.
navigation.reset({ index, routes })Reset toàn bộ stack (đăng xuất, onboarding xong).
route.paramsNhận params truyền từ screen khác.

Truyền dữ liệu giữa màn hình

// Gửi
navigation.navigate('Detail', { itemId: 123, title: 'Sản phẩm' });

// Nhận
const DetailScreen = ({ route }) => {
  const { itemId, title } = route.params;
  // Dùng itemId để fetch chi tiết...
};

Mẹo hay

  • Dùng screenOptions trên Navigator để config header chung.
  • Dùng options trên Screen để config riêng (title, headerShown, headerRight...).
  • TypeScript: Define RootStackParamList để type-safe params.
  • Deep linking: Cấu hình linking prop trên NavigationContainer.