2

我们正在使用 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。

4

0 回答 0