官网原话是这么说的:
Provides a way for your app to transition between screens where each new screen is placed on top of a stack.
为你的app提供了这样一个功能:让你的app在不通屏幕之间切换,并且每一个新的屏幕都放在堆栈的最顶部。
通俗一点:其实就是切换屏幕啦!
通过默认的
StackNavigator
将被配置为这样的感觉:在IOS上是从右边滑下,在Android上是通过底部淡出。在IOS上也可以配置为从底部淡出效果。
class MyHomeScreen extends React.Component {
static navigationOptions = {
title: 'Home',
}
render() {
return (
<Button
onPress={() => this.props.navigation.navigate('Profile', {name: 'Lucy'})}
title="Go to Lucy's profile"
/>
);
}
}
const ModalStack = StackNavigator({
Home: {
screen: MyHomeScreen,
},
Profile: {
path: 'people/:name',
screen: MyProfileScreen,
},
});
API定义
StackNavigator(RouteConfigs, StackNavigatorConfig)
RouteConfigs
RouteConfigs
对象是一个从路由名称到路由配置的映射。他告诉navigator
应该为该路由提供什么。
StackNavigator({
Profile: {
screen: ProfileScreen,
path: 'people/:name',
navigationOptions: ({navigation}) => ({
title: `${navigation.state.params.name}'s Profile'`,
}),
},
...MyOtherRoutes,
});
StackNavigatorConfig
Options for the router:
initialRouteName
设置堆栈的默认屏幕。必须匹配路线配置中的一个键。
initialRouteParams
初始化路由。
navigationOptions
设置默认导航选项。
paths
设置路径覆盖默认路径
Visual options
mode
定义一个呈现的样式。
----card
:使用标准的iOS和Android屏幕过渡。这是默认的。
----modal
:让屏幕从底部滑动,这是一个常见的iOS模式。只在iOS上运行,对Android没有影响。
headerMode
:如何展示头部标题
----float
: 当屏幕被改变时,呈现一个在顶部和动画的单个头部。这是iOS中常见的模式。
----screen
: 每一个屏幕都有一个头附在它上面,头和屏幕一起逐渐消失。这是Android上的常见模式。
----none
- 不会呈现头。
cardStyle
:使用这个 prop 覆盖或者扩展堆栈中的单个卡片的默认样式。
transitionConfig - Function to return an object that overrides default screen transitions.
onTransitionStart - Function to be invoked when the card transition animation is about to start.
onTransitionEnd - Function to be invoked once the card transition animation completes.
Screen Navigation Options