如何在 React native 中隐藏 header - 功能组件
How to hide header in React native - functional component
我们正在进行 react-native 项目。由于我们有自定义 header,因此我们过去常常使用 class 组件中的以下行隐藏默认值 header。
static navigationOptions = {
header: null
};
但是目前,我们正在创建带有钩子的新页面,钩子是功能组件。上面的行无助于隐藏功能组件中的默认 header。
如何使用功能组件隐藏默认 header。
我们有一个解决方案,将 header 隐藏在堆栈导航器本身中。
在 createStackNavigator 内部,
defaultNavigationOptions: {
gesturesEnabled: true,
header: null
}
但这将隐藏堆栈导航器中所有页面的 header。但是如果我们需要隐藏特定页面,解决方案是什么?
感谢任何宝贵的建议。
如果您使用的是 Navigation V5。
你可以像下面那样
初始化堆栈时,您可以将 headerShown 设置为 false
<Stack.Screen
name="Home"
component={HomeScreen}
options={{headerShown: false}}
/>
或者如果你想在组件内部做,你可以这样做
<Button
title="Update the title"
onPress={() => navigation.setOptions({ headerShown: false })}
/>
我已经给出了一个使用按钮点击的示例,但您可以根据需要在任何地方调用它。
如果您想使用旧版本使用的导航选项,您必须像下面那样使用静态 属性。
const HomeScreen = props => {
return <View><Text>Home</Text></View>
}
HomeScreen['navigationOptions'] = screenProps => ({
header: null
})
不知道我是否理解你的意思。我认为你正在使用反应导航。
有多种申请方式react-navigation。
1**> 你可以将 createStackNavigator 放在 jsx 上,并在每个组件或路由上添加选项 headerOptions on false,如下所示:
import * as React from 'react';
// react navigation
import 'react-native-gesture-handler';
import {NavigationContainer} from '@react-navigation/native';
import {createStackNavigator} from '@react-navigation/stack';
// components
import Home from './src/components/home';
import Login from './src/components/common/login';
const Stack = createStackNavigator();
const App = () => {
return (
<NavigationContainer>
<Stack.Navigator initialRouteName={Home}>
<Stack.Screen
name="Home"
component={Home}
options={{headerShown: false}}
/>
<Stack.Screen
name="Login"
component={Login}
options={{headerShown: false}}
/>
</Stack.Navigator>
</NavigationContainer>
);
};
export default App;
在这个例子中,我创建了两个组件来路由(Home 和 Login),添加 options={{headerShown: false}} 默认情况下 header 将消失。
2**> 第二种方法是直接在 object 上,然后将选项 headerMode:"none" 设置为不显示 header整个导航器:
import { createAppContainer } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';
// components
import Home from './src/components/home';
import Login from './src/components/common/login';
const App = createStackNavigator({
Home: {screen: Home},
Login: {screen: Login},
},{
initialRouteName:'Home',
headerMode:"none",
});
export default createAppContainer(App);
第二个选项是最短的,但你没有使用箭头函数并应用 redux 我更喜欢第一个选项来包装 Provider,但无论如何你可以使用两者之一。
我希望这就是您要找的。
最好的问候
我们正在进行 react-native 项目。由于我们有自定义 header,因此我们过去常常使用 class 组件中的以下行隐藏默认值 header。
static navigationOptions = {
header: null
};
但是目前,我们正在创建带有钩子的新页面,钩子是功能组件。上面的行无助于隐藏功能组件中的默认 header。
如何使用功能组件隐藏默认 header。
我们有一个解决方案,将 header 隐藏在堆栈导航器本身中。
在 createStackNavigator 内部,
defaultNavigationOptions: {
gesturesEnabled: true,
header: null
}
但这将隐藏堆栈导航器中所有页面的 header。但是如果我们需要隐藏特定页面,解决方案是什么?
感谢任何宝贵的建议。
如果您使用的是 Navigation V5。 你可以像下面那样 初始化堆栈时,您可以将 headerShown 设置为 false
<Stack.Screen
name="Home"
component={HomeScreen}
options={{headerShown: false}}
/>
或者如果你想在组件内部做,你可以这样做
<Button
title="Update the title"
onPress={() => navigation.setOptions({ headerShown: false })}
/>
我已经给出了一个使用按钮点击的示例,但您可以根据需要在任何地方调用它。
如果您想使用旧版本使用的导航选项,您必须像下面那样使用静态 属性。
const HomeScreen = props => {
return <View><Text>Home</Text></View>
}
HomeScreen['navigationOptions'] = screenProps => ({
header: null
})
不知道我是否理解你的意思。我认为你正在使用反应导航。
有多种申请方式react-navigation。
1**> 你可以将 createStackNavigator 放在 jsx 上,并在每个组件或路由上添加选项 headerOptions on false,如下所示:
import * as React from 'react';
// react navigation
import 'react-native-gesture-handler';
import {NavigationContainer} from '@react-navigation/native';
import {createStackNavigator} from '@react-navigation/stack';
// components
import Home from './src/components/home';
import Login from './src/components/common/login';
const Stack = createStackNavigator();
const App = () => {
return (
<NavigationContainer>
<Stack.Navigator initialRouteName={Home}>
<Stack.Screen
name="Home"
component={Home}
options={{headerShown: false}}
/>
<Stack.Screen
name="Login"
component={Login}
options={{headerShown: false}}
/>
</Stack.Navigator>
</NavigationContainer>
);
};
export default App;
在这个例子中,我创建了两个组件来路由(Home 和 Login),添加 options={{headerShown: false}} 默认情况下 header 将消失。
2**> 第二种方法是直接在 object 上,然后将选项 headerMode:"none" 设置为不显示 header整个导航器:
import { createAppContainer } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';
// components
import Home from './src/components/home';
import Login from './src/components/common/login';
const App = createStackNavigator({
Home: {screen: Home},
Login: {screen: Login},
},{
initialRouteName:'Home',
headerMode:"none",
});
export default createAppContainer(App);
第二个选项是最短的,但你没有使用箭头函数并应用 redux 我更喜欢第一个选项来包装 Provider,但无论如何你可以使用两者之一。
我希望这就是您要找的。 最好的问候