我正在创建一个应用程序,登录后需要在其中显示“底部标签导航器”。
我知道,借助createBottomTabNavigator
很容易。但是几乎没有什么转折:
我们有两种类型的用户。说“管理员”和“学生”。并且我们需要在“底部标签导航器”中为两种类型的用户显示不同的屏幕堆栈。两个用户的标签,标签图标等数量相同。只有屏幕堆栈不同。
所以我的问题是,什么是处理这种情况的好方法:
createBottomTabNavigator
创建两个Bottom Tab Navigator,然后在createSwitchNavigator
中将两者都添加吗?render
函数中返回“ Second”?或者其他任何好的方法,请提出建议。
答案 0 :(得分:0)
我现在正在使用这种方法(并且工作正常):
我是否应该使用createBottomTabNavigator创建两个Bottom Tab Navigator,然后将两者都添加到createSwitchNavigator中?
这是路由堆栈:
管理堆栈导航器:
const AdminStack1 = createStackNavigator(
{
AdminScreen1,
},
{headerMode: 'none', initialRouteName: 'AdminScreen1'},
);
const AdminStack2 = createStackNavigator(
{
AdminScreen2,
},
{headerMode: 'none', initialRouteName: 'AdminScreen2'},
);
学生堆栈导航器:
const StudentStack1 = createStackNavigator(
{
StudentScreen1,
},
{headerMode: 'none', initialRouteName: 'StudentScreen1'},
);
const StudentStack2 = createStackNavigator(
{
StudentScreen2,
},
{headerMode: 'none', initialRouteName: 'StudentScreen2'},
);
“管理”标签导航器:
const AdminTabNavigator = createBottomTabNavigator({
Home: AdminStack1,
Calendar: AdminStack2,
},
{
// tabBarOptions
});
“学生”标签导航器:
const StudentTabNavigator = createBottomTabNavigator({
Home: StudentStack1,
Calendar: StudentStack2,
},
{
// tabBarOptions
});
抽屉导航器:
const DrawerNavigator = createDrawerNavigator(
{
Admin: {
screen: AdminTabNavigator,
},
Student: {
screen: StudentTabNavigator,
},
},
{
contentComponent: Sidebar,
drawerWidth: 310,
drawerType: 'front',
},
);
主开关导航器:
const AppNavigator = createSwitchNavigator(
{
Login,
Main: DrawerNavigator,
},
{
initialRouteName: 'Login',
},
);
最后是App容器:
const AppContainer = createAppContainer(AppNavigator);
登录后,我得到了这张支票:
if (userType === 'Admin') {
this.props.navigation.navigate('AdminScreen1');
} else {
this.props.navigation.navigate('StudentScreen1');
}
因此,AdminScreen1
启动时,它将自动启动“管理”选项卡导航器,因为此屏幕仅出现在“管理”选项卡导航器中。否则,它将启动“学生”选项卡导航器。
请提出建议,是否还有其他更好的方法。