1. 程式人生 > >ReactNative基礎(五)使用react-navigation實現頁面的跳轉、引數的傳遞(StackNavigator

ReactNative基礎(五)使用react-navigation實現頁面的跳轉、引數的傳遞(StackNavigator

作者:阿鍾

部落格:http://blog.csdn.net/a_zhon

此部落格基於react-native-0.48.4

Navigator(導航欄)

在ReactNative v0.43之前的時候官方提供了Navigator元件,在v0.44版本之後官方就把他廢棄了這是為什麼呢?原因就是有個比他更好的react-navigation導航欄了、不得不說第三方依賴庫真的很強大。

React Navigation

  • 官網地址:https://reactnavigation.org

  • 其中包含了我們開發中最常用的三種導航方式 

    • StackNavigator(頂部導航欄)

    • TabNavigator (標籤導航欄)

    • DrawerNavigator(側滑選單導航欄)

    • 效果圖可以在官網首頁看下

這篇文章就簡單來說說StackNavigator

  • 既然使用的是第三方庫,如果在你專案的node_modules資料夾中沒有react-navigation那麼你需要執行如下命令

640?wx_fmt=png&wxfrom=5&wx_lazy=1

引入react-navigation中的StackNavigator

  • 建立一個Application.js檔案

640?wx_fmt=png&wxfrom=5&wx_lazy=1

這個檔案負責對我們需要跳轉的頁面進行註冊(相當於在Android中每一個Activity都需要在清單檔案中註冊),同時也建立了navigation供後續操作。

  • 修改 android 和 ios 的入口檔案載入這個檔案,然後就會繼續載入Main頁面 最終顯示內容

0?wx_fmt=png

效果圖: 

0?wx_fmt=png

在Main頁面新增一個按鈕跳轉至下一個頁面、並修改導航欄的樣式

0?wx_fmt=png0?wx_fmt=png0?wx_fmt=png

這裡就要重點說一說navigationOptions中的屬性了

  • 可以參考一下這篇文章react-navigation使用技巧或者官網給出的屬性介紹

  • headerTitle: '標題' ===> 導航欄的標題

  • header: null ===> 隱藏導航欄

  • headerTintColor: 'white' ===> 返回按鈕的顏色

  • headerTitleStyle: {} ===> 導航欄文字的樣式

  • headerStyle: {} ===> 導航欄的樣式

  • headerRight: (< View/>) ===> 設定頂部導航欄友邊的檢視 和 解決當有返回箭頭時,文字不居中


  • headerLeft: (< View/>) ===> 設定導航欄左邊的檢視 和 去除返回箭頭

  • headerBackTitle: null ===> 設定跳轉頁面左側返回箭頭後面的文字,預設是上一個頁面的標題

  • gestureResponseDistance: {horizontal: 300} ===> //設定滑動返回的距離

上面跳轉頁面的時候我們向下一個頁面傳遞了一個鍵值為key的引數

0?wx_fmt=png

頁面接收傳遞過來的值

0?wx_fmt=png

頁面跳轉效果圖(有點失幀)

0?wx_fmt=gif

Details頁面這裡就不貼出了,跟Main內容都是差不多的。可以檢視文末給出的原始碼

主要說一下最後一個帶有選單的頁面

  • 主要還是配置navigationOptions屬性

0?wx_fmt=png
  • 隱藏左邊返回箭頭:headerLeft: (< View/>),

  • 新增右邊的選單:headerRight: (),

對選單新增點選事件,新增headerRight檢視的時候我們已經呼叫好了方法現在只需要定義即可

  • 需要在view渲染完成之後新增點選事件

0?wx_fmt=png
  • 點選事件響應的函式

0?wx_fmt=png

Navigator:

http://reactnative.cn/docs/0.43/navigator.html#content

react-navigation:

https://reactnavigation.org/

react-navigation使用技巧:

http://www.jianshu.com/p/2f575cc35780

屬性介紹:

https://reactnavigation.org/docs/navigators/stack

碼源:

https://github.com/azhon/ReactNative/tree/master/Pagejump

0?wx_fmt=jpeg

一命二運三風水,四修陰德五讀書!

0?wx_fmt=jpeg

劉桂林

微訊號 : Android_LiuGuiLin

新浪微博:@劉某人程式設計師