React Navigation Header随屏幕变化

时间:2017-11-26 03:09:22

标签: reactjs react-native react-navigation stack-navigator

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

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

enter image description here

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

enter image description here

这是我的导航配置:

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;

1 个答案:

答案 0 :(得分:1)

每个StackNavigator都会带一个标题,第一个标题来自RootNavigator = StackNavigator({,第一个标题来自Clientes: { screen: StackNavigator({

首先,header: null中的接缝Clientes: { screen: StackNavigator({没有任何效果。您应该尝试使用headerMode: 'none',这将从Index删除空白标题,但也会从Teste删除标题和后退按钮,这不能解决您的所有问题。

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

RootNavigator(StackNavigator)
- Welcome
- Index
- Teste
- User(TabNavigator)
    - Clientes 
    - Opcoes

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

import { Header } from 'react-navigation';

Teste.navigationOptions = ({ navigation, screenProps }) => ({
    return {
        header: <Header {...screenProps} {...navigation} />
    }
});

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