React Native Navigation

Navigation patterns and React Navigation library usage.

Installation

Install React Navigation
npm install @react-navigation/native

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

Stack Navigator
npm install @react-navigation/native-stack

Bottom Tabs
npm install @react-navigation/bottom-tabs

Drawer
npm install @react-navigation/drawer

Stack Navigator

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

const Stack = createNativeStackNavigator();

function App() {
  return (
    
      
         name="Home" component={HomeScreen} 
         name="Details" component={DetailsScreen} 
      
    
  );
}

Navigation Methods

Navigate to screen
navigation.navigate("Details");
navigation.navigate("Details", { itemId: 42 });

Push new screen
navigation.push("Details");

Go back
navigation.goBack();

Pop to top
navigation.popToTop();

Access params
const { itemId } = route.params;

Set params
navigation.setParams({ itemId: 99 });

Bottom Tab Navigator

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

const Tab = createBottomTabNavigator();

function App() {
  return (
    
       name="Home" component={HomeScreen} 
       name="Settings" component={SettingsScreen} 
    
  );
}

Custom icons
screenOptions={({ route }) => ({
  tabBarIcon: ({ color, size }) => {
    return  name="home" size={size} color={color} ;
  }
})}

Header Configuration

Screen options

  name="Home"
  component={HomeScreen}
  options={{
    title: "My Home",
    headerStyle: { backgroundColor: "#f4511e" },
    headerTintColor: "#fff",
    headerTitleStyle: { fontWeight: "bold" }
  }}


Dynamic title
navigation.setOptions({
  title: "Updated!"
});

Header buttons
headerRight: () => (
   onPress={handlePress} title="Info" 
)