我的应用程序中既有DrawerNavigator
又有StackNavigator
。有两个用户members
和limited
用户。
因此limited
当用户登录时,我想从DrawerNavigator
中删除MyProfile
,并且member
登录时应该显示MyProfile
。如何实现这一点。请查看我的代码。
const AppNavigator = createStackNavigator(
{
Splash: { screen: Splash },
Login: { screen: Login },
Home: { screen: Home },
About: { screen: About },
ListEvents: { screen: ListEvents }
},
{
initialRouteName: 'Splash',
headerMode: 'none'
}
);
const DrawerNavigator = createDrawerNavigator({
Home: AppNavigator,
MyProfile: { screen: MyProfile },
About: { screen: About }
});
const MainNavigation = createSwitchNavigator({
HomeDrawer: DrawerNavigator,
AuthStack: AppNavigator
})
const AppContainer = createAppContainer(MainNavigation);
export default AppContainer;
如何在上面的代码中实现我的结果?我不知道该怎么做。
假设你有一个布尔限制,那么你可以传递给一个函数来根据条件获取 AppContainer
export default function AppContainer(limited) {
const AppNavigator = createStackNavigator(
{
Splash: { screen: Splash },
Login: { screen: Login },
Home: { screen: Home },
About: { screen: About },
ListEvents: { screen: ListEvents }
},
{
initialRouteName: "Splash",
headerMode: "none"
}
);
const DrawerNavigator = limited
? createDrawerNavigator({
Home: AppNavigator,
About: { screen: About }
})
: createDrawerNavigator({
Home: AppNavigator,
MyProfile: { screen: MyProfile },
About: { screen: About }
});
const MainNavigation = createSwitchNavigator({
HomeDrawer: DrawerNavigator,
AuthStack: AppNavigator
});
return createAppContainer(MainNavigation);
}
然后在您的 AppRegistry 组件中使用它
import React from "react";
import AppContainer from "./AppContainer";
export default class App extends React.Component {
render() {
const limited = true; // set true or false
const Navigation = AppContainer(limited);
return <Navigation />;
}
}