为什么我们有多个 stackNavigators?

why we have multiple stackNavigators?

例如此代码形式 react-navigation documentation 用于身份验证:

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',
  }
));

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

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

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

也就是说,使用多个导航器并不是绝对必要的,因为这些选项中的大多数都可以逐屏设置,但在尝试尽量减少样板代码量时可能会有所帮助。