createStackNavigator
为应用程序提供一种在每个新屏幕放置在堆栈顶部的屏幕之间转换的方法。
stack navigator 默认为 iOS 和 Android 效果:iOS右侧滑入,Android底部淡入。
API 语法
createStackNavigator(RouteConfigs, StackNavigatorConfig);
RouteConfigs
screen- 对应界面名称,是一个React组件path- 深度链接路径,从其他App或者Web跳转到该App需要设置该路径navigationOptions- 用于屏幕的默认导航选项title可用作headerBackTitle的标题。此外,将用作tabBarLabel(如果嵌套在TabNavigator中)或drawerLabel(如果嵌套在DrawerNavigator中)的回退标题headerReact元素,用来作为标题。设置null隐藏标题headerTitle可使用String,React Element,React Component。默认title作为标题。当使用Component时,接受allowFontScaling,style和children作为属性。title会被放在children中headerBackTitle返回标题,默认为 titleheaderTruncatedBackTitle返回标题不能显示时(比如返回标题太长了)显示此标题,默认为'Back'headerRight头部右边组件headerLeft头部左边组件headerStyle头部组件的样式headerTitleStyle头部标题的样式headerBackTitleStyle头部返回标题的样式headerTintColor头部颜色headerPressColorAndroidAndroid 5.0 以上MD风格的波纹颜色gesturesEnabled是否能侧滑返回,iOS 默认 true,Android 默认 false
StackNavigatorConfig
可选的路由属性
initialRouteName- 设置默认屏幕。必须为路由配置中的某个screen。initialRouteParams- 初始路由路线的参数。navigationOptions- 用于屏幕的默认导航选项。paths- 覆盖路由配置中设置的路径的映射。
可选的视觉选项
mode定义渲染和转换的样式card使用标准的iOS和Android屏幕转换。iOS左右切换,Android底部划入。默认。modal屏幕从底部滑入,只适用于iOS,对Android没有影响。
headerMode定义如何呈现标题float在屏幕更改时渲染保留在顶部的单个标题和动画。iOS 默认效果。screen每个屏幕都附有一个标题,标题与屏幕一起淡入和淡出。Android 默认效果none不会显示标题。
headerTransitionPreset指定标题在headerMode: float启用时应该如何从一个屏幕切换到另一个屏幕。fade-in-place标题组件在不移动的情况下淡入淡出,类似于iOS的Twitter,Instagram和Facebook应用程序。这是默认值。uikitiOS的默认效果。
cardStyle使用此道具覆盖或扩展堆栈中单个卡的默认样式。transitionConfig函数返回与默认屏幕转换合并的对象。提供的函数将传递以下参数:transitionProps新屏幕的过渡转换。prevTransitionProps旧屏幕的过渡转换。isModal指定屏幕是否为模态。
onTransitionStart跳转动画即将开始时要调用的函数。onTransitionEnd跳转动画完成后调用的函数。
createBottomTabNavigator
屏幕底部的简单标签栏,可在不同路由之间切换。路由是懒加载的(屏幕组件直到第一次选中时才会初始化)
这个方法在 1.x 中叫做 ,在 TabNavigator2.x 中统一命名为 createBottomTabNavigator
API语法
createBottomTabNavigator(RouteConfigs, BottomTabNavigatorConfig);
RouteConfigs
screen- 对应界面名称,是一个React组件path- 深度链接路径,从其他App或者Web跳转到该App需要设置该路径navigationOptions- 用于屏幕的默认导航选项title通用标题可以用作headerTitle和tabBarLabeltabBarVisible显示或隐藏底部标签栏,默认为true,不隐藏。tabBarIconReact Element或使用函数function({focused:boolean,tintColor:string})返回一个React.Node。tabBarLabel可使用String、React Element或者传入{focused:boolean,tintColor:string}属性的函数并返回一个React.Node。如果未定义,会使用title作为默认值。如果想要隐藏,可参考tabBarOptions.showLabel。tabBarOnPress标签栏点击事件回调,接受一个对象,如下:{ defaultHandle: f defaultHandle() navigation: {goBack: f, navigate: f, setParams: f, pop: f, popToTop: f, ...} }
BottomTabNavigatorConfig
- initialRouteName - 第一次加载时初始选项卡路由的
routeName。 order定义选项卡顺序的routeNames数组。paths提供routeName到path的深度链接,会覆盖RouteConfigs中设置的路径。backBehavior后退按钮是否会导致标签切换到初始路由。initialRoute会导致,默认;none不会导致tabBarComponent覆盖用作标签栏的组件。tabBarOptions标签栏属性:activeTintColor活动选项卡的标签和图标颜色。(选中)activeBackgroundColor活动选项卡的背景颜色。(选中)inactiveTintColor非活动选项卡的标签和图标颜色。(未选中)inactiveBackgroundColor非活动选项卡的背景颜色。(未选中)showLabel是否显示标签,默认true。style标签栏的样式。labelStyle标签栏文字的样式。tabStyle选项卡的样式。allowFontScaling标题字体是否应该缩放以遵循系统设置。默认true。
createMaterialBottomTabNavigator
方法在正式版2.X中废弃,使用
material风格需要安装react-navigation-material-bottom-tabs、react-native-paper和react-native-vector-icons
react-native-material-bottom-navigation
屏幕底部的 Material 设计主题标签栏,可在不同路由之间切换。路由懒加载(屏幕组件只在第一次获取焦点时才被加载)。
API语法
createMaterialBottomTabNavigator(RouteConfigs, MaterialBottomTabNavigatorConfig);