如何在某些路由上设置headerMode而不在其他路由上设置.(反应导航)

Col*_*n45 10 react-native react-navigation

使用React Navigation是否可以使用headerMode定义某些路由而不使用其他路由?

我的大多数页面都不使用标题,我发现如何全局关闭它.

export const App = StackNavigator({
  PhotoView: {
    screen: Photos
  },
  ListView: {
    screen: List
  }
}, {
  headerMode: 'none'
});
Run Code Online (Sandbox Code Playgroud)

但是,如果我想展示标题ListView,我该怎么做?

我从文档中尝试了几种方法,但没有运气.

alp*_*pha 9

您可以将应用程序导航器包装在根导航器中,设置navigationOptions.headernull隐藏所有包装的导航器标题,然后navigationOptions.headerTitle在屏幕上设置要显示标题.

这个答案来自react-navigation v1.0.0-beta.9

const App = StackNavigator({
  PhotoView: {
    screen: Photos,
  },
  ListView: {
    screen: List,
    navigationOptions: {
      headerTitle: 'ListView',
    },
  }
});

export const Root = StackNavigator({
  Root: { 
    screen: App,
    navigationOptions: {
      header: null,
    },
  },
});
Run Code Online (Sandbox Code Playgroud)

  • @alpha提供的解决方案和评论很接近.为`PhotoView`将headerTitle设置为null将隐藏标题,但不会隐藏栏的高度...你需要做的是将`PhotoView`的`navigationOptions.headerStyle`设置为{display:'none'} - 这实现了所需的无标题外观为`PhotoView`,并允许标题显示为`ListView` (3认同)

小智 7

您可以使用以下命令隐藏屏幕属性组件中的导航器标题:

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