установка значения false для жеста / свайпа не работает [response-navigation v5]

В моем приложении, поддерживающем реакцию, я хочу, чтобы ящик был отключен на некоторых экранах. Все экраны являются стеком и переданы drawerNavigation. Указание navigationOptions для этих двух экранов с gestureEnabled или swipeEnabled на false, ящик открывается при смахивании

const StackScreens = ({navigation}) => (
  <Stack.Navigator
    initialRouteName="SplashScreenCtrl"
    headerMode="screen"
    screenOptions={{}}
    mode="card">
    <Stack.Screen name="Splash" component={SplashScreenCtrl} options={{gestureEnabled: false}}/> // or swipeEnabled:false
    <Stack.Screen name="Login" component={LoginScreen} options={{gestureEnabled: false}}/>
  {/* and 10 more screens*/}
  </Stack.Navigator>
);

// and in the render method
return (
    <StatusBar backgroundColor="black" barStyle="light-content" />
    <NavigationContainer>
      <Drawer.Navigator drawerContent={(props) => <CustomDrawer {...props} />} >
        <Drawer.Screen name="DrawerScreen" component={StackScreens} />
      </Drawer.Navigator>
    </NavigationContainer>
);

Также не работает определение параметров навигации на экране.

// in LoginScreen.js
static navigationOptions = ({navigation}) => ({
    headerShown: false,
    swipeEnabled: false,
  });
// Then at creating stack navigator
<Stack.Screen name="Login" component={LoginScreen} options={LoginScreen.navigationOptions}/>



Ответы (1)


Уже поздно, но это может помочь кому-то

Вы должны поместить gestureEnabled: false в свое объявление Drawer

   <Drawer.Navigator drawerContent={(props) => <CustomDrawer {...props} />} >
        <Drawer.Screen name="DrawerScreen" component={StackScreens} 
           options={{ gestureEnabled: false }}/>
person Jayapen Jose    schedule 19.09.2020
comment
Это неправильный ответ. Это отключит смахивание для всех экранов, а не для некоторых из них. - person Amir-Mousavi; 20.09.2020