StackNavigator
為你的應(yīng)用程序提供一種在兩屏幕之間切換的方法瘦麸,每一個新的屏幕都會放在棧的頂部鸽扁。
默認(rèn)情況下蒜绽,StackNavigator配置為具有熟悉的iOS和Android外觀:iOS上的新屏幕從右側(cè)滑出,從Android的底部漸入桶现。在iOS上躲雅,StackNavigator也可以配置為modal樣式,屏幕從底部滑入
例如:
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
路由配置和路由名稱的一種映射骡和,告訴navigator按照該路由要呈現(xiàn)什么
StackNavigator({
//Home界面route
Home:{
//require Homescreen就是一個react的組件(component)相赁,用來展示的那個界面
screen:HomeScreen,//當(dāng)HomeScreen加載完成后,他會得到一個navigation屬性
//optional 當(dāng)深層次關(guān)聯(lián)或者在web app中使用React Navigation,使用路徑
path:'people/:username',
//optional Override navigationOptions方法慰于,對navigator做一些配置
navigationOptions:{
//設(shè)置個標(biāo)題
title:({state}) => `${state.params.username}'s Profile'`
},
},
//我的其他路由钮科,類似于上面這種定義模式的,供給navigator實現(xiàn)頁面見得跳轉(zhuǎn)
...MyOtherRoutes,
)}
StackNavigatorConfig
option for the route(路由選項):
initialRouteName:為stack設(shè)置默認(rèn)的界面婆赠,必須和route configs里面的一個key匹配绵脯。
initialRouteParams: 初始路由的參數(shù)。
navigationOptions:屏幕導(dǎo)航的默認(rèn)選項休里。
paths: routeconfig里面路徑設(shè)置的映射蛆挫。
Visual Option(視覺選項):
mode: 定義渲染(rendering)和轉(zhuǎn)換(transitions)的模式,兩種選項(給字符串即可):
card:使用標(biāo)準(zhǔn)的iOS和Android的界面切換,這是默認(rèn)的份帐。
modal:僅在iOS端有用璃吧,即模態(tài)出該視圖。
headerMode: 指定header應(yīng)該如何被渲染,選項:
float: 共用一個header 意思就是有title文字漸變效果废境。ios常見模式
screen: 各用各的header 意思就是沒有title文字漸變效果畜挨。Android常見模式
none: 沒有header筒繁。
cardStyle: 使用該屬性繼承或者重載一個在stack中的card的樣式。
onTransitionStart: 一個函數(shù)巴元,在換場動畫開始的時候被激活毡咏。
onTransitionEnd: 一個函數(shù),在換場動畫結(jié)束的時候被激活
Screen Navigation Options
通常你可以定義一個靜態(tài)的navigationOptions在你的組件之上
title:string 可用作headerTitle逮刨、tabBarLabel
header:React element或一個給出HeaderProps參數(shù)呕缭、返回React element的函數(shù),null則隱藏Header
headerTitle:string或者React element修己,默認(rèn)是title的值恢总,
headerBackTitle:iOS上的后退按鈕使用的標(biāo)題字符串,或禁用標(biāo)簽睬愤,默認(rèn)為上一個scene的headerTtile
headerTruncatedBackTitle:當(dāng)headerBackTtile不適應(yīng)screen是使用片仿,默認(rèn)為'Back',
headerRight:React element,顯示在header右側(cè),
headerLeft:React element尤辱,顯示在header左側(cè)砂豌,
headerStyle:header的樣式,
headerTitleStyle:headerTitle的樣式光督,
headerBackTitleStyle:headerBackTitle的樣式阳距,
headerTintColor:android上的返回icon可用此設(shè)置,
headerPressColorAndroid:material波紋顏色 Android>=5.0有效结借,
gesturesEnabled:是否可以使用手勢關(guān)閉此屏幕筐摘。在iOS上默認(rèn)為true,在Android上為false,
Navigator Props
通過StackNavigator()創(chuàng)建的導(dǎo)航組件可帶有screenProps屬性
例如:
const SomeStack = StackNavigator({
// config
});
<SomeStack
screenProps={/* this prop will get passed to the screen components as this.props.screenProps */}
/>
Ex