将手势/滑动设置为 false 不起作用 [反应导航 v5]



在我的反应本机应用程序中,我希望在某些屏幕上禁用抽屉。所有屏幕都是堆栈并传递给drawerNavigation。为这两个屏幕指定navigationOptionsgestureEnabledswipeEnabledfalse,仍然通过滑动抽屉打开

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}/>

它晚了,但它可能会帮助一些人

您应该在抽屉声明中放置手势启用:false

<Drawer.Navigator drawerContent={(props) => <CustomDrawer {...props} />} >
<Drawer.Screen name="DrawerScreen" component={StackScreens} 
options={{ gestureEnabled: false }}/>

最新更新