如何在 React Native 上隐藏 createStackNavigator 的 header?

How to hide header of createStackNavigator on React Native?

我想隐藏 header 因为我已经在代码中设置了工具栏的样式:

import {createStackNavigator}
from 'react-navigation'
const AppStackNavigator = createStackNavigator ({
  Home: HomePage,
  Friend: AddFriend,
  Bill: AddBill,
})
class App extends Component {
render() {
  return (
  <AppStackNavigator initialRouteName='Home'/>`<br>
  );
  }
}
export default App;

我应该在我的代码中添加什么?

像这样更新你的代码

const AppStackNavigator = createStackNavigator ({
    Home: {
        screen: HomePage, 
        navigationOptions: {
            header: null,
        },
    },
})

如果您不希望 header 适用于所有屏幕,则

const AppStackNavigator = createStackNavigator ({
    Home: {
        screen: HomePage,
    },
},
{
    navigationOptions: {
        header: null,
    },
})

注意:此解决方案适用于旧版本的 React Navigation。

要针对特定​​屏幕或全局隐藏 headers,您可以执行

const StackNavigator = createStackNavigator({
    Home: {
        screen: HomePage,
        navigationOptions: {
            header: null // Will hide header for HomePage
        }
    }
}, {
    navigationOptions: {
        header: null // Will hide header for all screens of current stack navigator,
        headerLeft: <HeaderLeft /> // Component to be displayed in left side of header (Generally it can be Hamburger)
        headerRight: <HeaderRight /> // Component to be displayed in right side of header
    }
})

另请注意,屏幕特定设置将覆盖全局设置。 希望,这会有所帮助。

我使用以下代码隐藏了 header。

   {
    navigationOptions: {
        header: null // Will hide header for all screens of current stack 

    }

要为 createStackNavigator 中的所有视图禁用 headers,您可以使用 headerMode 选项。

const AppStackNavigator = createStackNavigator({
  Home: HomePage,
  Friend: AddFriend,
  Bill: AddBill,
},
{
  headerMode: 'none',
})

参考:StackNavigatorConfig - createStackNavigator - React Navigation

你能试试吗:

static navigationOptions = {
    header: null
}

在您的屏幕组件内。

2020 年更新 - React 导航 5+

使用 header : null 将不再有效。在选项中,您需要将 headerMode 设置为 none 连同 headerShownfalse如下:

<AuthStack.Navigator>
   <AuthStack.Screen name="AUTH" component={AuthScreen} options={{headerMode: 'none', headerShown : false}}/>
</AuthStack.Navigator>

试试这个
options ={{ header: () => {}}}
由于您明确没有为 header 函数提供任何参数,因此它不会显示任何 header.
有关更多信息,请参阅:react native docs

出于某种原因,我能找到的所有答案都来自 React navigation v4,这在 v5 中不起作用。在花了一些时间之后,我想出了一种在 v5 中隐藏工具栏的方法。这是:

import { createStackNavigator } from "@react-navigation/stack";
import { NavigationContainer } from "@react-navigation/native";

...

const Stack = createStackNavigator();

....
//and inside render
render(){
    return (
          <NavigationContainer>
            <Stack.Navigator>
              <Stack.Screen
                name="Home"
                component={HomeScreen}
                options={{
                  title: "Home",
                  headerShown: false,
                }}
              />
}

headerShown: false, 这样就可以了

如果您需要有关从 v4 迁移到 v5 的帮助 -> https://reactnavigation.org/docs/upgrading-from-4.x/

navigationOptions: { 
    header: null
}

已弃用。新的是

navigationOptions: { 
    headerShown: false
}

参考:

React Navigation 6(从 10 月 21 日开始)

下面的解决方案不再有效:

navigationOptions: {
  header: null,
},

而不是 navigationOptions,您只想使用 options,并将 headerShown 设置为 true,将 header 设置为 null。工作解决方案:

options={{
  headerShown: true,
}}