我试图创建多个屏幕并在它们之间切换,我认为反应导航会很棒。但是,尽管将header设置为null,我还是会出现标题自动出现的问题。 我的App.js createStackNavigation为:
const AppNavigator = createStackNavigator({
register : {
screen: RegisterScreen,
},
login: {
screen: LoginScreen,
},
home : {
screen: HomeScreen
},
},
{
navigationOptions: {
header:null,
headerMode: 'none',
}
}
);
在这里,我有三个屏幕。即注册,登录和回家。在注册屏幕内,我还有其他createStackNavigator用于registerFinal,登录和注册屏幕本身。如下所示。
const registerNavigation = createStackNavigator(
{
register: {
screen: RegisterScreen,
headerMode: 'none',
navigationOptions: ({ navigation }) => ({
header: null,
}),
},
registerFinal: {
screen: RegisterFinalScreen,
navigationOptions: ({ navigation }) => ({
header: null,
headerShown: false
}),
} ,
login: {
screen: LoginScreen,
navigationOptions: ({ navigation }) => ({
header: null,
headerShown: false
}),
},
},
{
navigationOptions: ({ navigation }) => ({
header: null,
headerShown: false
}),
}
);
尽管如此,我还是使用了其他问题中指定的两种方法在navigationOptions中禁用了标头,但似乎没有一种对我有用。我的屏幕上出现两个标题。我该如何解决?
答案 0 :(得分:2)
重新启动模拟器解决了该问题。我的天啊。这件事让我改变了我的项目很多次。但是有时候,您只需要嘲笑它即可。
答案 1 :(得分:1)
隐藏标题的另一种方法是:
export default class LoginPage extends Component{
static navigationOptions = { // remove header on this page
header: null
}
}
答案 2 :(得分:0)
还要在注册堆栈上使用headerMode
而不是headerShown
。
基本上更改您的注册堆栈以反映以下内容:
const registerNavigation = createStackNavigator(
{
register: {
screen: RegisterScreen,
headerMode: 'none',
navigationOptions: ({ navigation }) => ({
header: null,
}),
},
registerFinal: {
screen: RegisterFinalScreen,
navigationOptions: ({ navigation }) => ({
header: null,
headerMode: 'none'
}),
},
login: {
screen: LoginScreen,
navigationOptions: ({ navigation }) => ({
header: null,
headerMode: 'none'
}),
},
},
{
navigationOptions: ({ navigation }) => ({
header: null,
headerMode: 'none'
}),
}
);const registerNavigation = createStackNavigator(
{
register: {
screen: RegisterScreen,
headerMode: 'none',
navigationOptions: ({ navigation }) => ({
header: null,
}),
},
registerFinal: {
screen: RegisterFinalScreen,
navigationOptions: ({ navigation }) => ({
header: null,
headerMode: 'none'
}),
},
login: {
screen: LoginScreen,
navigationOptions: ({ navigation }) => ({
header: null,
headerMode: 'none'
}),
},
},
{
navigationOptions: ({ navigation }) => ({
header: null,
headerMode: 'none'
}),
}
);
希望这会有所帮助!
答案 3 :(得分:0)
headerMode: 'none'
不应位于navigationOptions
内:
const AppNavigator = createStackNavigator({
// ...
}, {
// No `navigationOptions` here
headerMode: 'none'
})
答案 4 :(得分:0)
EXPO
或RN cli
才能使Simulator进行更改。`yourComponentName`.navigationOptions = () => {
return {
headerShown: false
}
}
//above code needs to be before you EXPORT your component
export default `yourComponentName`
您还可以在所有屏幕上隐藏header
,这样检查。
提示:您可以在导航器中添加headerShown: false
来为所有屏幕设置选项,而不是在每个屏幕的选项中添加screenOptions={{ headerShown: false }}
。