React Navigation Header随屏幕变化

Igo*_*ins 6 reactjs react-native react-navigation stack-navigator

我有一个StackNavigation并想要一个默认的Header(组件标题),并希望"深页"显示为React Navigation生成的默认标题.

在我的索引页面中**Index**,只需要Header组件(第一个标题)...但是显示另一个空白标题:

在此输入图像描述

在我的"深度页面"中**Teste**只需要RNav自动生成的标题和后退按钮(第二个标题)......但是第一个标题显示出来.

在此输入图像描述

这是我的导航配置:

const RootNavigator = StackNavigator({
    Welcome: {screen: Welcome},
    User: {
        screen: TabNavigator({
            Clientes: {
                screen: StackNavigator({
                    Index: {screen: Clientes},
                    Teste: {
                        screen: Teste,
                        header: undefined
                    }
                }, {
                    header: null,
                    navigationOptions: {
                        tabBarIcon: () => (
                            <Icon name="list-alt" size={22} color="#ffffff" />
                        )
                    }
                })
            },
            Opcoes: { screen: Opcoes }
        }, {
            tabBarPosition: 'bottom',
            tabBarOptions: {
                showLabel: false,
                activeTintColor: '#fff',
                showIcon: true,
                inactiveTintColor: '#ccc',
                indicatorStyle: {
                    backgroundColor: '#ccc'
                },
                style: {
                    backgroundColor: '#536878'
                }
            }
        })
    },
}, {
    initialRouteName: 'User',
    navigationOptions: {
        header: props => <Header {...props} />
    }
});

export default RootNavigator;
Run Code Online (Sandbox Code Playgroud)

zar*_*ode 2

每个 StackNavigator 都带有一个标头,第一个标头来自RootNavigator = StackNavigator({,您看到的底部标头来自Clientes: { screen: StackNavigator({

首先,header: null你的接缝Clientes: { screen: StackNavigator({没有任何影响。您应该尝试headerMode: 'none'相反,这将删除空白标题Index,但也会删除带有Teste标题和后退按钮的标题,这并不能解决您的所有问题。

所以我建议不同的导航器结构:

RootNavigator(StackNavigator)
- Welcome
- Index
- Teste
- User(TabNavigator)
    - Clientes 
    - Opcoes
Run Code Online (Sandbox Code Playgroud)

接下来您应该做的是为Teste内部组件本身设置不同的标题(默认标题,带有后退按钮),如下所示:

import { Header } from 'react-navigation';

Teste.navigationOptions = ({ navigation, screenProps }) => ({
    return {
        header: <Header {...screenProps} {...navigation} />
    }
});
Run Code Online (Sandbox Code Playgroud)

您甚至可以制作自己的标头组件并在 Teste.navigationOptions 中使用它。