如何在单页上管理两种导航,一种是createstack导航器,第二种是抽屉式导航器?

时间:2018-10-15 14:01:08

标签: reactjs react-native react-navigation

导出默认类App扩展了React.Component {   render(){

Traceback (most recent call last):
  File "picam.py", line 8, in <module>
    import socketserver
ImportError: No module named socketserver

}

return(
  <MyApp />
  );
 return(

  <Navigation />
  );

欢迎:{     屏幕:启动画面     navigationOptions:{       标头:null     }   },   登录: {     屏幕:Requesterlogin,     navigationOptions:{       标题:“登录”,       headerTitleStyle:{         alignSelf:“居中”,         textAlign:“居中”,         宽度:“ 77%”       },       headerStyle:{         backgroundColor:“#095473”       },       headerTintColor:“白色”     }   }

忘记了:{     屏幕:忘记了,     navigationOptions:{     标题:“忘记密码”,       headerTitleStyle:{         alignSelf:“居中”,         textAlign:“居中”,         宽度:“ 77%”       },       headerStyle:{         backgroundColor:“#095473”       },       headerTintColor:“白色”     }   } });

const Navigation = createStackNavigator({

{     主页:{       屏幕:Reqlogin,       navigationOptions:{         抽屉标签:“首页”,         抽屉图标:()=>(           

const MyApp = DrawerNavigator(

} );

在上面的代码中,我使用了两个用于导航的导航CreateStack导航。 用于Myapp的抽屉导航器。但就我而言,只有Myapp在起作用。请提供一些想法,以使两者都能正常工作。谢谢。

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试实施身份验证流程。您应该使用createSwitchNavigator并在其中嵌套其他导航器。 SwitchNavigator可以帮助您进行身份验证流程,因为它可以处理诸如确保您无法使用“后退”按钮从“登录”屏幕跳至主应用程序的操作。

这个想法是,您将有一个SwitchNavigator作为父导航器,它具有两个流程:用户是否登录。子导航器类似于AuthMain。如果用户未登录,则活动导航器将是Auth,它本身就是StackNavigator。如果用户已登录,则活动导航器将是一个DrawerNavigator,其中堆叠了StackNavigator

import { createSwitchNavigator, createStackNavigator, createDrawerNavigator } from 'react-navigation';

const App = createDrawerNavigator({ AppStack: AppStack });
const AppStack = createStackNavigator({
  Home: { screen: Reqlogin },
  Profile: { screen: Profile_Requester }
});
const Auth = createStackNavigator({
  Welcome: { screen: Splash },
  Login: { screen: Requesterlogin },
  Forgot: { screen: Forgot }
});

export default createSwitchNavigator(
  {
    AuthLoading: AuthLoadingScreen,  // You'll check whether user is logged in or not here
    App: AppStack,
    Auth: AuthStack,
  },
  {
    initialRouteName: 'AuthLoading',
  }
);

要获取更多帮助,请访问this documentationthis article