reactjs - 将手势/滑动设置为 false 不起作用 [react-navigation v5]
问题描述
在我的 react-native 应用程序中,我希望在某些屏幕上禁用抽屉。所有屏幕都是堆栈并传递给drawerNavigation
. 使用或to指定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}/>
解决方案
它迟到了,但它可能会帮助一些人
您应该在 Drawer 声明中放置gestureEnabled: false
<Drawer.Navigator drawerContent={(props) => <CustomDrawer {...props} />} >
<Drawer.Screen name="DrawerScreen" component={StackScreens}
options={{ gestureEnabled: false }}/>
推荐阅读
- ipython - 蟒蛇。如何在下一行继续代码?
- c# - 如何获得“jan-2018, Feb-2018, Mar-2018”作为下拉列表
- php - 连接失败。错误 #2:stream_socket_client():无法连接到 ssl://smtp.gmail.com:465(连接被拒绝)
- javascript - Angular 仅从方法中获取 1 个值,我如何才能获得多个结果
- c# - EF core 2.14 将几个相同类型的对象映射到一个表
- spring - 当 URL 在 Spring Boot 中包含潜在的恶意字符串时重定向到 index.html
- angular - PayPal 正在使用沙盒,但不使用实时,使用 Rest API
- java - Spring Boot 服务中的线程
- xml - XSL 计算特定标签的总和
- php - 如何在 FedEx API 中查看“远程区域”的订单 | 拉拉维尔 | PHP