Я использую React Navigation 5+
. Они изменили способ настройки навигаторов, и я пытаюсь реализовать его в своей программе. У меня DrawerNavigator
как навигатор верхнего уровня. Первый экран - StackNavigator
с несколькими экранами. Я ищу способ запретить пользователю открывать ящик на каждом экране, кроме первого. Вот мой файл Navigator:
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
}
};
Я не ожидал, что это сработает, но я просто выбрасывал туда что-то. Как разрешить пользователю открывать ящик на экране SearchLocationsScreenStack, но не на остальных экранах NavigationStack
?