首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个导航器嵌套在堆栈中还是切换导航器比较好?

将多个导航器嵌套在堆栈中还是切换导航器比较好?
EN

Stack Overflow用户
提问于 2019-08-29 00:08:53
回答 1查看 486关注 0票数 1

我有一个材料顶部标签导航器和一个抽屉导航器,当两者都嵌套在堆栈/开关导航器中时,都会成功地显示。但是我看不出有什么区别。使用哪一种方法有什么不同?如果是的话,哪一种更好,或者是否取决于偏好。

下面是我目前使用的开关导航器:

代码语言:javascript
复制
const TabNavigator = createMaterialTopTabNavigator(
    {
        Calculator: {
            screen: CalculatorScreen,
            navigationOptions: {
                tabBarIcon: ({}) => (
                    <Icon name='ios-calculator' size={28} color='#FFF'/>
                )
            }
        },
        Camera: {
            screen: CameraScreen,
            navigationOptions: {
                tabBarIcon: ({}) => (
                    <Icon name='ios-camera' size={28} color='#FFF'/>
                )
            }
        },
        Solution: {
            screen: SolutionScreen,
            navigationOptions: {
                tabBarIcon: ({}) => (
                    <Icon name='ios-paper' size={28} color='#FFF'/>
                )
            }
        }
    },
    {
        animationEnabled: false,
        initialRouteName: 'Camera',
        tabBarPosition: 'bottom',
        tabBarOptions: {
            showIcon: true,
            showLabel: false,
            indicatorStyle: {
                opacity: 0
            },
            style: {
                backgroundColor: 'transparent',
                position: 'absolute',
                left: 0,
                bottom: 0,
                right: 0
            }
        }
    }
)

const DrawerNavigator = createDrawerNavigator(
    {
        Contact: {
            screen: TabNavigator
        }
    },
    {
        drawerBackgroundColor: 'rgba(255,255,255,.9)',
        contentOptions: {
            activeTintColor: '#fff',
            activeBackgroundColor: '#6b52ae',
        },
    }
);

const SwitchNavigator = createSwitchNavigator(
    {
        Drawer: {
            screen: DrawerNavigator
        },
        Screen: {
            screen: TabNavigator
        }
    }
)

export default AppContainer = createAppContainer(SwitchNavigator)

在这两种情况下,我得到的结果几乎是相同的。所以,我唯一的问题是,哪一个更好,区别是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-29 01:28:45

switchnavigatorstacknavigator之间的区别在于是否堆栈。默认情况下,每次移动屏幕时,StackNavigator都会生成堆栈。这意味着您将看到屏幕上的屏幕,因此您可以执行'goBack()‘按钮。但是,switchnavigator不堆栈。switchnavigator 在移动屏幕时重置路径

SwitchNavigatorSwitchNavigator的目的是一次只显示一个屏幕。默认情况下,它不处理回退操作,并在切换时将路由重置为默认状态。 StackNavigator:为您的应用程序提供了一种在屏幕之间进行转换的方法,其中每个新屏幕都放在堆栈的顶部。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57701406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档