push
時, 咱們會嚮導航堆棧中添加新路由。 navigate
時, 它首先嚐試查找具備該名稱的現有路由, 而且只有在堆棧上沒有一個新路由時纔會推送該路由。若是當前頁面能夠執行返回操做,則 stack navigator 會自動提供一個包含返回按鈕的標題欄(若是導航堆棧中只有一個頁面,則沒有任何可返回的內容,所以也不存在返回鍵)。編程
有時候你但願可以以編程的方式觸發此行爲,可使用 this.props.navigation.goBack()
。函數
在Android上,React Navigation 掛鉤到硬件的返回按鈕,並在用戶按下返回按鈕時觸發
goBack()
方法,所以它的行爲與用戶指望的相同。
另外一個常見需求是可以跨越多個頁面返回this
Home
,因此咱們可使用 navigate('Home')
,或者使用 navigation.popToTop()
,它能夠返回到堆棧中的第一個頁面。有2個知識點
1.須要將參數包裝成一個對象,做爲navigation.navigate方法的第二個參數傳遞給路由。如:code
this.props.navigation.navigate('RouteName', {paramName: 'value'})
2.讀取頁面組件中的參數的方法:對象
-可使用this.props.navigation.getParam讀取參數
-也可使用 this.props.navigation.state.params做爲getParam的替代方案, 若是未指定參數,它的值是 null。因此使用getParam一般更容易,你沒必要處理這種狀況路由
1.每一個頁面組件能夠有一個名爲navigationOptions的靜態屬性,它是一個對象或一個返回包含各類配置選項的對象的函數。 咱們用於設置標題欄的標題的是title這個屬性。get
class HomeScreen extends React.Component { static navigationOptions = { title: 'Home', }; /* render function, etc */ }
createStackNavigator默認狀況下按照平臺慣例設置,因此在iOS上標題居中,在Android上左對齊。
it
2.調整標題樣式
定製標題樣式時有三個關鍵屬性:headerStyle、headerTintColor和headerTitleStyle。io
headerStyle:一個應用於 header 的最外層 View 的 樣式對象, 若是你設置 backgroundColor ,他就是header 的顏色。
headerTintColor:返回按鈕和標題都使用這個屬性做爲它們的顏色。 在下面的例子中,咱們將 tint color 設置爲白色(#fff),因此返回按鈕和標題欄標題將變爲白色。
headerTitleStyle:若是咱們想爲標題定製fontFamily,fontWeight和其餘Text樣式屬性,咱們能夠用它來完成。function
class HomeScreen extends React.Component { static navigationOptions = { title: 'Home', headerStyle: { backgroundColor: '#f4511e', }, headerTintColor: '#fff', headerTitleStyle: { fontWeight: 'bold', }, }; /* render function, etc */ }
3.如何在頁面之間共享navigationOptions
將配置移動到 defaultNavigationOptions
屬性下的 stack navigator 中.
const AppNavigator = createStackNavigator( { Home: HomeScreen, Details: DetailsScreen }, { initialRouteName: "Home", defaultNavigationOptions: { headerStyle: { backgroundColor: '#f4511e', }, headerTintColor: '#fff', headerTitleStyle: { fontWeight: 'bold', }, }, } );