reactjsnavigationnativedrawer

REACT NATIVE DRAWER; The action 'NAVIGATE' with payload {"name":"Home"} was not handled by any navigator. Do you have a route named 'Home'?


I am fairy new to react native. I am using react-navigation/native": "^7.0.15" and react-navigation/drawer": "^7.1.2" to navigate from one screen on a drawer to another screen on the same drawer. However, i am getting the error "The action 'NAVIGATE' with payload {"name":"Home"} was not handled by any navigator. Do you have a route named 'Home'?" Please have a look at my entire code below and tell me what i may be getting wrong.

import React from 'react';
import { Button, View } from 'react-native';
import { createDrawerNavigator } from '@react-navigation/drawer';
import { NavigationContainer } from '@react-navigation/native';
import { useNavigation } from '@react-navigation/native';
import AntDesign from '@expo/vector-icons/AntDesign';

function HomeScreen({ navigation }) {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Button
        onPress={() => navigation.openDrawer()}
        title="Open drawer"
      />
      <Button
        onPress={() => navigation.closeDrawer()}
        title="Close drawer"
      />
    </View>
  );
}

function NotificationsScreen({ navigation }) {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Button onPress={() => navigation.goBack()} title="Go back home" />
    </View>
  );
}

const Drawer = createDrawerNavigator();

export default function App() {
  const navigation = useNavigation();
  return (
    //<NavigationContainer>
      <Drawer.Navigator initialRouteName="Home" backBehavior="history">
        <Drawer.Screen name="Home" component={HomeScreen} />
        <Drawer.Screen name="Notifications" component={NotificationsScreen}


        options={{
        title: "Settings",
        headerLeft: () => <AntDesign name="arrowleft" size={30} color="black"              onPress={() => {   navigation.navigate('Home')    ;}}          />,  
        }}
        />

      </Drawer.Navigator>
    //</NavigationContainer>
  );
}

Solution

  • **Can you try this**
    
        import React from 'react';
        import { Button, View } from 'react-native';
        import { createDrawerNavigator } from '@react-navigation/drawer';
        import { NavigationContainer } from '@react-navigation/native';
        import AntDesign from '@expo/vector-icons/AntDesign';
        
        function HomeScreen({ navigation }) {
          return (
            <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
              <Button
                onPress={() => navigation.openDrawer()}
                title="Open drawer"
              />
              <Button
                onPress={() => navigation.closeDrawer()}
                title="Close drawer"
              />
            </View>
          );
        }
        
        function NotificationsScreen({ navigation }) {
          return (
            <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
              <Button onPress={() => navigation.goBack()} title="Go back home" />
            </View>
          );
        }
        
        const Drawer = createDrawerNavigator();
        
        export default function App() {
          return (
            <NavigationContainer>
              <Drawer.Navigator initialRouteName="Home" backBehavior="history">
                <Drawer.Screen name="Home" component={HomeScreen} />
                <Drawer.Screen
                  name="Notifications"
                  component={NotificationsScreen}
                  options={({ navigation }) => ({ 
                    title: "Settings",
                    headerLeft: () => (
                      <AntDesign
                        name="arrowleft"
                        size={30}
                        color="black"
                        onPress={() => navigation.navigate('Home')}
                      />
                    ),
                  })}
                />
              </Drawer.Navigator>
            </NavigationContainer>
          );
        }