如何仅在 React Native 的某些屏幕中隐藏父堆栈导航器标题

Posted

技术标签:

【中文标题】如何仅在 React Native 的某些屏幕中隐藏父堆栈导航器标题【英文标题】:How to hide a parent Stack Navigator Header only in certain screens in React Native 【发布时间】:2021-12-01 15:10:43 【问题描述】:

根据标题,我想隐藏父堆栈导航器的标题子组件,这是因为有些屏幕我想保留父标题和一些屏幕我不会。

我知道可以在父 Stack Navigator 中简单地将 header 属性设置为 null,但有什么方法可以在运行时从子组件更改该属性?

这是导航器的层次结构:

ParentStackNavigator
|
|__TabNavigator
   |__Other Screen
   |__MainScreen (Stack Navigator)
      |
      |__ScreenWithHeader
      |__ScreenWithoutHeader
         

挑战是当我在 ScreenWithoutHeader 中时隐藏 ParentStackNavigator 中的标题,而不是在 ScreenWithHeader 中时。我能想到的一种解决方案是用上下文包装整个事情,但我希望有更好的方法。

【问题讨论】:

【参考方案1】:

如果你想在堆栈导航器中隐藏标题,你必须这样做:

<Stack.Navigator screenOptions=headerShown: false>

如果你只想在一个屏幕中隐藏heade,你必须这样做:

<Stack.Screen name=screens.Home component=Home options=headerShown: false />

【讨论】:

以上是关于如何仅在 React Native 的某些屏幕中隐藏父堆栈导航器标题的主要内容,如果未能解决你的问题,请参考以下文章

react-native 应用程序中某些屏幕的模态导航

仅在 xcode for ios 的 react native 项目中使用 lottie 的自定义动画启动屏幕 [关闭]

首次登录时的 React-Native 欢迎屏幕

仅在用户按下 React Native 中的按钮后如何获取位置

如何让 React Native 仅在 Android 操作系统上从包中获取/导入功能

本机基础文本仅在某些屏幕上显示大写