Я использую React Navigation 5+
. Они изменили способ настройки навигаторов, и я пытаюсь реализовать это в своей программе. У меня DrawerNavigator
как навигатор верхнего уровня. Первый экран — это StackNavigator
с несколькими экранами. Я ищу способ запретить пользователю открывать ящик на каждом экране, кроме первого экрана. Вот мой файл навигатора:
const Stack = createStackNavigator();
const Drawer = createDrawerNavigator();
function CheckinStack() {
return (
<Stack.Navigator
initialRouteName={"Loading"}
headerMode={"none"}
>
<Stack.Screen
name={"Search Locations"}
component={SearchLocationsScreen}
options={{gestureEnabled: true}}
/>
<Stack.Screen
name={"Check In Form"}
component={CheckInFormScreen}
options={{gestureEnabled: false}}
/>
<Stack.Screen
name={"Checked In"}
component={CheckedInScreen}
options={{gestureEnabled: false}}
/>
<Stack.Screen
name={"Business Details"}
component={BusinessDetailsScreen}
options={{gestureEnabled: false}}
/>
</Stack.Navigator>
);
}
function MainDrawer() {
return (
<Drawer.Navigator >
<Drawer.Screen name={"Search Locations"} component={CheckinStack}/>
<Drawer.Screen name={"About"} component={AboutScreen}/>
<Drawer.Screen name={"Favorites"} component={FavoritesScreen}/>
<Drawer.Screen name={"Profile"} component={ProfileScreen}/>
<Drawer.Screen name={"Report Issues"} component={ReportIssuesScreen}/>
</Drawer.Navigator>
);
}
const NavContainer = (props) => {
return (
<NavigationContainer>
<MainDrawer />
</NavigationContainer>
)
};
export default NavContainer
Как видите, я попытался установить для gestureEnabled
значение false на всех экранах, кроме одного (это мой главный экран). Это не имеет никакого эффекта. Если я установлю для gestureEnabled
значение false в самом навигаторе, это предотвратит жест смахивания ящика на всех экранах.
Я попытался сделать такой код внутри экрана:
CheckInFormScreen.navigationOptions = navData => {
return {
gestureEnabled: false
}
};
Я действительно не ожидал, что это сработает, но я просто выбрасывал туда вещи. Как я могу разрешить пользователю открыть Drawer на экране SearchLocationsScreen NavigationStack, но не на остальных экранах NavigationStack
?