我们正在使用 createSwitchNavigator 为我们的应用程序创建 AppStack 和 Auth Stack
我们的开关组件看起来像
import React,{Component} from 'react';
import {Platform, StyleSheet, Text, View} from 'react-native';
import {
createSwitchNavigator,
createStackNavigator,
createAppContainer
} from 'react-navigation';
import LoginForm from './Forms/LoginForm';
import ShellForm from './Forms/ShellForm';
AuthStack = createStackNavigator({ Login: LoginForm });
AppStack = createStackNavigator({ Shell: ShellForm});
const AppContainer = createAppContainer(
createSwitchNavigator(
{
App: AppStack,
Auth: AuthStack,
},
{
initialRouteName: 'Auth',
}
));
export default class RootAppContainer extends React.Component {
render() {
return <AppContainer />
}
}
在 shell 中,我们正在创建动态抽屉菜单。初始应用程序将在我们有登录表单和忘记密码的地方加载 Auth Stack。
由于我们在 js 加载的 Header 中导入了 ShellForm,它会触发所有 const 变量并尝试获取菜单。
我们的外壳形式看起来像
getAppContainer = () =>{
// get menus from we depends on the User logged in
var MenuBarInfo = require('../JsonData/Menu.json');
getMenus({}, getMenuSuccess, getMenuFailure);
var drawerlist = this.getDrawerListItems(MenuBarInfo.MenuItems)
var drawerOptions = {
contentComponent: MenuComponent,
initialRouteName:'Home',
drawerBackgroundColor: 'white',
drawerWidth: 300,
navigationOptions: {
gesturesEnabled: true,
}
}
drawer = createDrawerNavigator(
drawerlist ,
drawerOptions
);
return createAppContainer(drawer);
}
const DrawerNav = getAppContainer();
由于 DrawerNav 是一个 const 变量,它试图准备菜单有没有办法实现这一点并避免预先加载。
有什么方法可以在登录完成后才开始呈现 ShellForm。