前言:
react-navigation是一款導(dǎo)航組件,之前用navigationIos雖然是純?cè)?但是并不支持android端沸伏。我們當(dāng)然是希望能夠雙平臺(tái)盡量少寫代碼,提高復(fù)用率基茵。在這樣的情況下椿访,發(fā)現(xiàn)了react-navigation。facebook也推薦此庫阁最。經(jīng)過大體摸索戒祠,這個(gè)庫已經(jīng)具備基本導(dǎo)航功能,還提供了一些跳轉(zhuǎn)動(dòng)畫速种,個(gè)人認(rèn)為值得學(xué)習(xí)姜盈,可以使用在一般項(xiàng)目。導(dǎo)航在iOS開發(fā)中是頁面跳轉(zhuǎn)的靈魂配阵,所以我們先從navigation來學(xué)起馏颂。
幾大模塊:
此庫按UI可以分為三個(gè)部分StackNavigator示血,TabNavigator,DrawerNavigator.
其中,StackNavigator
可以理解為iOS開發(fā)中的UINavigator
,上方的導(dǎo)航欄救拉。TabNavigator
可以理解為iOS中的TabBarController.DrawerNavigator
是一種抽屜效果矾芙,側(cè)邊滑出。
重要屬性:
tabBarPosition: 設(shè)置tabbar的位置近上,iOS默認(rèn)在底部剔宪,安卓默認(rèn)在頂部。(屬性值:'top'壹无,'bottom')
swipeEnabled:是否允許在標(biāo)簽之間進(jìn)行滑動(dòng)葱绒。
animationEnabled:是否在更改標(biāo)簽時(shí)顯示動(dòng)畫。
lazy:是否根據(jù)需要懶惰呈現(xiàn)標(biāo)簽斗锭,而不是提前制作地淀,意思是在app打開的時(shí)候?qū)⒌撞繕?biāo)簽欄全部加載,默認(rèn)false.
initialRouteName:'', // 設(shè)置默認(rèn)的頁面組件
backBehavior:'none', // 按 back 鍵是否跳轉(zhuǎn)到第一個(gè)Tab(首頁)岖是, none 為不跳轉(zhuǎn)
tabBarOptions:{
// iOS屬性
// 因?yàn)榈诙€(gè)tabbar是在頁面中創(chuàng)建的帮毁,所以前景色的設(shè)置對(duì)其無效,當(dāng)然也可以通過設(shè)置tintColor使其生效
activeTintColor:'black', // label和icon的前景色 活躍狀態(tài)下(選中)豺撑。
inactiveTintColor:'orange', // label和icon的前景色 不活躍狀態(tài)下(未選中)烈疚。
activeBackgroundColor:'blue', //label和icon的背景色 活躍狀態(tài)下(選中) 。
inactiveBackgroundColor:'white', // label和icon的背景色 不活躍狀態(tài)下(未選中)聪轿。
showLabel:true, // 是否顯示label爷肝,默認(rèn)開啟。
具體可以看這個(gè)簡單的demo陆错。有問題歡迎留言灯抛。其中tabbar有3種加載方式,借鑒了一篇csdn博客的(忘記保存了音瓷,記不清名字)对嚼。我選用了其中一種,nav包viewcontroller的方法绳慎,這種和iOS思想比較相近纵竖。還有2種,一種可以在外層app.js寫具體屬性偷线,一種是nav直接在viewcontroller里寫磨确。