为什么我们有多个 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。
也就是说,使用多个导航器并不是绝对必要的,因为这些选项中的大多数都可以逐屏设置,但在尝试尽量减少样板代码量时可能会有所帮助。
例如此代码形式 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。
也就是说,使用多个导航器并不是绝对必要的,因为这些选项中的大多数都可以逐屏设置,但在尝试尽量减少样板代码量时可能会有所帮助。