在堆栈导航器中隐藏标题react导航

IT技术 javascript react-native react-navigation expo
2021-01-19 14:44:47

我正在尝试使用堆栈和选项卡导航器切换屏幕。

const MainNavigation = StackNavigator({
      otp: { screen: OTPlogin },
      otpverify: { screen: OTPverification},
      userVerified: {
        screen: TabNavigator({
          List: { screen: List },
          Settings: { screen: Settings }
        }),
      },
    });

在这种情况下,首先使用堆栈导航器,然后使用选项卡导航器。我想从堆栈导航器中隐藏标题。当我使用导航选项时,它不能正常工作:

navigationOptions: { header: { visible: false } }

我正在 stacknavigator 中使用的前两个组件上尝试此代码。如果我使用这一行,则会收到一些错误,例如:

在此处输入图片说明

6个回答

更新至第 5 版

截至5版本,它是选择headerShownscreenOptions

用法示例:

<Stack.Navigator
  screenOptions={{
    headerShown: false
  }}
>
  <Stack.Screen name="route-name" component={ScreenComponent} />
</Stack.Navigator>

如果您只想在 1 个屏幕上隐藏标题,您可以通过在屏幕组件上设置 screenOptions 来完成此操作,请参见下面的示例:

<Stack.Screen options={{headerShown: false}} name="route-name" component={ScreenComponent} />

另请参阅有关第 5 版博客

更新
从 2.0.0-alpha.36 (2019-11-07) 版本开始,
有一个新的 navigationOption:headershown

      navigationOptions: {
        headerShown: false,
      }

https://reactnavigation.org/docs/stack-navigator#headershown

https://github.com/react-navigation/react-navigation/commit/ba6b6ae025de2d586229fa8b09b9dd5732af94bd

旧答案

我用它来隐藏堆栈栏(注意这是第二个参数的值):

{
    headerMode: 'none',
    navigationOptions: {
        headerVisible: false,
    }
}

当您使用此方法时,它将隐藏在所有屏幕上。

在您的情况下,它将如下所示:

const MainNavigation = StackNavigator({
  otp: { screen: OTPlogin },
  otpverify: { screen: OTPverification },
  userVerified: {
    screen: TabNavigator({
    List: { screen: List },
    Settings: { screen: Settings }
   }),
 }
},
{
  headerMode: 'none',
  navigationOptions: {
    headerVisible: false,
  }
 }
);
嗯,这是一个很好的问题。老实说,我不知道。您可以在要显示的屏幕上尝试 @Dpkstr 答案,而不是 null 它将为 true。
2021-03-18 14:44:47
嗯,我已经试过了,但它也不起作用……谢谢你的第一个回答。我现在将使用按钮来实现第二个功能。
2021-03-19 14:44:47
完美运行!感谢您的回答,但在添加此内容后我遇到了一个问题:将 stacknavigator 切换到 tabnavigator 其工作正常。如果我想在将屏幕从 tabnavigator 切换到 stacknaviagtor 时显示标题,我该怎么办?
2021-03-20 14:44:47
这对我很有用。谢谢
2021-03-30 14:44:47
如果他想在 v5+ 中隐藏特定屏幕的标题应该options像这样使用prop<Stack.Screen options={{ headerShown: false, }} name="Artist" component={Artist} />
2021-04-07 14:44:47

在 v4 上,只需在要隐藏标题的页面中使用以下代码

export default class Login extends Component {
    static navigationOptions = {
        header: null
    }
}

请参阅堆栈导航器

你能告诉我你是如何导航到 List 的吗
2021-03-22 14:44:47
这很好,但一个问题是,当屏幕从 stacknavigator 切换到 tabNavigator 时(正如我在我的问题组件中提到的,比如 OTPverification screen to list screen 那时两个标题都显示
2021-04-02 14:44:47

只需将其添加到您的类/组件代码片段中,Header 就会被隐藏

 static navigationOptions = { header: null }

在给定的解决方案中,HomeScreen 的标题是隐藏的,选项={{headerShown:false}}

<NavigationContainer>
  <Stack.Navigator>
    <Stack.Screen name="Home" component={HomeScreen} options={{headerShown:false}}/>
    <Stack.Screen name="Details" component={DetailsScreen}/>
  </Stack.Navigator>
</NavigationContainer>

如果你的屏幕是一个类组件

static navigationOptions = ({ navigation }) => {
    return {
       header: () => null
    } 
}

在您的目标屏幕中将其编码为第一种方法(函数)。

对,header: () => null是正确的方法,否则加载页面时会出现标题故障
2021-03-31 14:44:47