React-Navigation:无法使用嵌套导航器隐藏标头

ama*_*iny 10 javascript react-native react-navigation

我正在使用官方的反应导航来处理我的导航.我有一个主要的TabNavigator用于整个应用程序,有两个选项卡(称为HitchhikingMapNavigatorSettingsNavigator下面),每个选项卡都有一个嵌套的StackNavigator:

const HitchhikingMapNavigator = StackNavigator({
  hitchhikingMap: { screen: HitchhikingMapViewContainer },
  spotDetails: { screen: SpotDetailsViewContainer }
}, {
  navigationOptions: {
    header: {
      visible: false
    }
  }
});

const SettingsNavigator = StackNavigator({
  // some other routes
});

export default AppNavigator = TabNavigator({
  hitchhikingMap: { screen: HitchhikingMapNavigator },
  settings: { screen: SettingsNavigator }
}, {
  navigationOptions: {
    header: {
      visible: false,
    },
 },
});
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样,即使在我看来,我也把标题的可见性放在了虚假的地方HitchhikingMapViewContainer:

class HitchhikingMapView extends React.Component {

  static navigationOptions = {
    title: 'Map',
    header: {
      visible: false,
    },
    //...other options
  }
Run Code Online (Sandbox Code Playgroud)

然而,标题栏仍然可见:

截图

如果我没有嵌套导航器(即,如果我放置此代码,跳过嵌套导航器):

export default AppNavigator = TabNavigator({
  hitchhikingMap: { screen: HitchhikingMapViewContainer },
  settings: { screen: SettingsNavigator }
});
Run Code Online (Sandbox Code Playgroud)

然后标题被正确隐藏.

所以结论:当我有两个嵌套的导航器时,我无法使标题不可见.有任何想法吗?

ama*_*iny 16

对于那些仍在寻找答案的人,我会在这里发布.

两个解决方案:

第一个解决方案:headerMode: 'none'在StackNavigator中使用.这将删除StackNavigator中所有屏幕的标题

第二个解决办法:用headerMode: 'screen'在StackNavigator并添加header: { visible: false }navigationOptions要隐藏标题屏幕.

更多信息可以在这里找到:https://reactnavigation.org/docs/en/stack-navigator.html

  • 至于React Navigation 1.0.0-beta.11标题:{visible:false}不起作用.请改用header:null. (5认同)

h--*_*--n 10

v1.0.0-beta.9以下开始,使用以下内容,

static navigationOptions = {
    header: null
}
Run Code Online (Sandbox Code Playgroud)