Я борюсь с React Navigation 5, чтобы открыть ящик, когда я нажимаю на значок, я получаю эту ошибку undefined is not an object (evaluating 'navigation.openDrawer')
Проблема с headerRight
, значок отображается правильно, но когда я нажмите на нее, я получаю ошибку выше. Даже если я получаю navigation
из своего реквизита, я не понимаю, почему я не могу использовать его для вызова openDrawer()
Я также проверил navigation.toggleDrawer()
, он показывает ту же ошибку.
Чего мне не хватает?
export default function App({ navigation }) {
const Stack = createStackNavigator();
const Drawer = createDrawerNavigator();
const defaultOptions = {
headerStyle: {
backgroundColor: Colors.primary
},
headerTitleStyle: {
fontFamily: "raleway-bold"
},
headerBackTitleStyle: {
fontFamily: "raleway-regular"
},
headerTintColor: "white",
headerRight: () => (
<TouchableOpacity onPress={() => navigation.openDrawer()}>
<Ionicons
name={Platform.OS === "android" ? "md-menu" : "ios-menu"}
size={32}
color="white"
style={styles.menu}
/>
</TouchableOpacity>
)
};
const createHomeStack = () => (
<Stack.Navigator>
<Stack.Screen
name="Dashboard"
component={DashboardScreen}
options={defaultOptions}
/>
<Stack.Screen
name="AddExperience"
component={AddExperienceScreen}
options={defaultOptions}
/>
<Stack.Screen
name="AddEducation"
component={AddEducationScreen}
options={defaultOptions}
/>
</Stack.Navigator>
);
return (
<NavigationContainer>
<Drawer.Navigator>
<Drawer.Screen name="Home" children={createHomeStack} />
<Drawer.Screen name="Dashboard" component={DashboardScreen} />
<Drawer.Screen name="Profiles" component={ProfilesScreen} />
</Drawer.Navigator>
</NavigationContainer>
);
}