【发布时间】:2019-03-18 22:48:18
【问题描述】:
TL;DR:我需要这个结果(下面列出了 DrawerNavigator 和 StackNavigator 导航):
结构:
我有这样的屏幕结构:
在根页面(由“ • ”表示)中,我需要使用 DrawerNavigator 进行导航,而我需要使用子页面(由“ |_ ”表示)进行导航StackNavigator。
这是我想要得到的行为:
• Account
|_ Create Account
|_ Login
|_ Forget Password
• Products
|_ Product detail
|_ Ingredients
• Configuration
• About
• Cart
|_ Checkout
|_ Finish Checkout
抽屉:MainDrawer with => createDrawerNavigator()
• Account
• Products
• Configuration
• About
• Cart
SwitchNavigator:
Start: StartCheck, // Screen component
App: MainDrawer, // Drawer
Welcome: WelcomeScreen, // Screen component
组件:StartCheck 和 WelcomeScreen 是 <Component />
StartCheck:这只是检查 AsyncStorage 上是否有数据,例如 "isFirstRun",并根据 结果 [like this documentation]。
我的代码:
屏幕:
const Screens = {
account: {
screen: AccountScreen,
path: 'account'
},
products: {
screen: ProductsScrren,
path: 'products'
},
configuration: {
screen: ConfigurationScrren,
path: 'configuration'
},
about: {
screen: AboutScrren,
path: 'about'
},
cart: {
screen: CartScrren,
path: 'cart'
},
};
主抽屉:
const MainDrawer = createDrawerNavigator({
...Screens
}, {
contentComponent: Sidebar,
initialRouteName: 'products',
});
带有 SwitchNavigator 的应用容器:
const AppContainer = createAppContainer(createSwitchNavigator(
{
StartCheck: StartCheck, // Component
App: MainDrawer, // Drawer
Welcome: WelcomeScreen, // Component
},
{
initialRouteName: 'StartCheck',
}
));
export default AppContainer;
有了这段代码,Header没有出现,所以我把DrawerNavigator放到StackNavigator里面:
主堆栈:
const MainStack = createStackNavigator({
MainDrawer
});
然后我用 SwitchNavigator 修改 App Container:
const AppContainer = createAppContainer(createSwitchNavigator(
{
StartCheck: StartCheck, // Component
App: MainStack, // Stack
Welcome: WelcomeScreen, // Component
},
{
initialRouteName: 'StartCheck',
}
));
export default AppContainer;
但是通过这种方式,标题重叠侧边栏,如果我使用headerMode: 'none',我的标题也会从其他屏幕上消失(不仅仅是容器)。
我需要这个结果(上面有 DrawerNavigator 和 StackNavigator 导航列表):
而且我也不知道可以把副屏放在哪里(用 StackNavigator 的导航方法打开)。
抱歉这篇大文章,是我尽量详细,因为我一直在寻找解决方案,但我没有找到......
【问题讨论】:
-
你试过在 DrawerNavigator 中嵌套 StackNavigators 吗?
-
怎么样?您可以发布示例吗?
标签: javascript react-native react-navigation react-navigation-stack react-navigation-drawer