发布
社区首页 >问答首页 >如何仅禁用其中一个导航器屏幕的抽屉导航滑动?

如何仅禁用其中一个导航器屏幕的抽屉导航滑动?
EN

Stack Overflow用户
提问于 2019-03-15 04:57:03
回答 5查看 9.5K关注 0票数 7

我有一个自定义的导航抽屉,在一个特定的屏幕上,我不希望它可用。

这是我的简短代码。

此导航器也包含在交换机导航器中。我已经在git-hub和其他论坛上挖掘过了,但目前什么都不起作用。我是不是漏掉了什么?有人来上班了吗?

代码语言:javascript
代码运行次数:0
复制
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,但我尝试了and和and,结果显示了两个导航器,而且在屏幕上我不想显示它出现的抽屉。这是我从参考expo代码开始的尝试

代码语言:javascript
代码运行次数:0
复制
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)
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-03-16 20:09:12

问题是我使用Ignite来生成我的项目模板,而react导航版本被修复为3.0.0。在看了this link上的最后一条评论后,我意识到这不是我的语法问题。

所以我删除了我的packed.lock.json,yarn.lock,node_modules文件夹,在package.json中我将版本设置为^3.0.0,以便获得最新版本。

在所有这些之后,我做了一个yarn安装来获得一个完整的包更新。有了这个改变,我的react导航抽屉从1.0.1升级到了1.3.0,这就解决了这个问题。

我还对我的导航做了一些更改,现在看起来像这样:

代码语言:javascript
代码运行次数:0
复制
export default class UserNavigation extends React.Component{
  render(){
    return <Nav />
  }
}

const Nav = createAppContainer(
  createDrawerNavigator(
    {
      ProductListScreen: {screen: ProductListScreen},
      ProductHistoryScreen: {
        screen: ProductHistoryScreen,
          navigationOptions:{
            drawerLockMode: 'locked-closed'
          }
      }
    }, {
      initialRouteName: 'ProductListScreen',
      contentComponent: CustomDrawerContentComponent,
    }
  )
)
票数 3
EN

Stack Overflow用户

发布于 2020-05-18 10:27:55

在v5中,您可以使用<Drawer.Navigator screenOptions={{ gestureEnabled: false }} ...>...</Drawer.Navigator>

票数 6
EN

Stack Overflow用户

发布于 2020-12-07 05:14:40

您可以使用"swipeEnabled“属性设置每个屏幕的选项。请查看文档的相关页面;

https://reactnavigation.org/docs/drawer-navigator/#options

代码语言:javascript
代码运行次数:0
复制
<Drawer.Navigator initialRouteName="Feed">
  <Drawer.Screen
    name="Feed"
    component={Feed}
    options={{ swipeEnabled: false }}
  />
  <Drawer.Screen
    name="Profile"
    component={Profile}
    options={{ drawerLabel: 'Profile' }}
  />
</Drawer.Navigator>);}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55171880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档