Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 为什么我们有多个堆栈导航器?_Reactjs_React Native_Mobile_React Navigation_React Navigation Stack - Fatal编程技术网

Reactjs 为什么我们有多个堆栈导航器?

Reactjs 为什么我们有多个堆栈导航器?,reactjs,react-native,mobile,react-navigation,react-navigation-stack,Reactjs,React Native,Mobile,React Navigation,React Navigation Stack,例如,此代码表单react导航用于身份验证: import { createSwitchNavigator, createStackNavigator, createAppContainer } from 'react-navigation'; // Implementation of HomeScreen, OtherScreen, SignInScreen, AuthLoadingScreen // goes here. const AppStack = createStackNavig

例如,此代码表单
react导航
用于身份验证:

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

// Implementation of HomeScreen, OtherScreen, SignInScreen, AuthLoadingScreen
// goes here.

const AppStack = createStackNavigator({ Home: HomeScreen, Other: OtherScreen });
const AuthStack = createStackNavigator({ SignIn: SignInScreen });

export default createAppContainer(createSwitchNavigator(
  {
    AuthLoading: AuthLoadingScreen,
    App: AppStack,
    Auth: AuthStack,
  },
  {
    initialRouteName: 'AuthLoading',
  }
));

为什么我们有两个不同的堆栈导航器?为什么我们不把所有的屏幕都打包成一个导航器?在同一个导航器中包装不同屏幕的逻辑应该是什么?

如果您只考虑导航,那么就没有真正的理由将一个堆栈导航器放在另一个堆栈导航器中

但是,由于视觉原因,可能需要使用不同的导航器-不同的过渡、标题布局和其他样式选项,所有这些都可以找到


也就是说,严格来说,不必使用多个导航器,因为这些选项中的大多数都可以逐个屏幕进行设置,但在尝试最小化样板代码量时,这可能会有所帮助。

如果您有不同的堆栈导航器,您可以根据用户是否登录来选择路由。我相信这个例子就是这样。如果用户未登录,应用程序将选择AuthStack,然后用户登录后将转到AppStack