我有一个自定义的导航抽屉,在一个特定的屏幕上,我不希望它可用。
这是我的短代码。
这个导航器也被switch navigator包含。我在git-hub和其他论坛上挖掘,目前没有任何工作。我错过了什么吗?有人让它工作吗?
const UserNavigation = createDrawerNavigator({
ProductListScreen: {screen: ProductListScreen},
ProductHistoryScreen: {
screen: ProductHistoryScreen,
navigationOptions: {
drawerLockMode: 'locked-closed'
}
}
}, {
initialRouteName: 'ProductListScreen',
contentComponent: CustomDrawerContentComponent,
})
export default createAppContainer(UserNavigation)
还有一个working code on expo,但我尝试和结果在双导航显示,并在屏幕上,我不想显示它出现的抽屉。
const UserStackNavigation = createStackNavigator({
ProductListScreen: {screen: ProductListScreen},
ProductHistoryScreen: {
screen: ProductHistoryScreen
}
})
const UserNavigation = createDrawerNavigator({
UserStackNavigation: UserStackNavigation
}, {
initialRouteName: 'UserStackNavigation',
contentComponent: CustomDrawerContentComponent,
})
UserStackNavigation.navigationOptions = ({ navigation }) => ({
drawerLockMode: navigation.state.index === 0 ? 'unlocked' : 'locked-closed',
});
export default createAppContainer(UserNavigation)
6条答案
按热度按时间xmq68pz91#
您可以使用“swipeEnabled”属性设置每个屏幕的选项。请查看文档的相关页面;
https://reactnavigation.org/docs/drawer-navigator/#options
gzjq41n42#
在v5中,可以使用
<Drawer.Navigator screenOptions={{ gestureEnabled: false }} ...>...</Drawer.Navigator>
uhry853o3#
问题是我使用Ignite生成我的项目模板,而React导航版本在3.0.0时被修复。在看了this link的最后一条评论后,我意识到这不是我的语法问题。
所以我删除了我的packed.lock.json,yarn.lock,node_modules文件夹,在package.json中我将版本设置为^3.0.0以获得最新版本。
在这一切之后,我做了一个yarn安装,以获得完整的软件包更新。通过这个更改,我的react-navigation-drawer从1.0.1到1.3.0,这解决了这个问题。
我也对我的导航做了一些修改,现在看起来像这样:
57hvy0tb4#
如需在React Navigation V5中禁用单个路径中的滑动/手势:
导入助手以获取当前路线名称
import { getFocusedRouteNameFromRoute } from '@react-navigation/native';
检查路线名称是否与要禁用滑动/手势的路线相同
wooyq4lh5#
我已经添加了导航设置代码禁用侧菜单的特定屏幕,这可能对某人有帮助.
App.js包含以下代码
jm81lzqq6#
swipeEnabled
属性可以提供帮助,但抽屉仍可能因其他原因而被触发(例如,一个操作可以通过编程打开它)。如果你想确保抽屉在某些情况下根本不显示,并且你能够全局检测到这种情况,你可以在
screenOptions
中使用drawerStyle: { display: 'none' }
:在我的例子中,如果用户没有经过身份验证,我不想显示抽屉,所以我定义了显示:“没有”在这种情况下。