react native 路由

1.router stack

2.Navigator和兄弟組件NavigatorIOS

NavigatorIOS只能在IOS中使用夭谤,在Android中不能使用,而Navigator既可以在IOS中使用势就,也可以在Android中使用。

3.<Navigator>

比較穩(wěn)定辐益,但是比較繁瑣偷崩。從0.44版本開始,Navigator被從react native的核心組件庫中剝離到了一個名為react-native-deprecated-custom-components的單獨(dú)模塊中帚呼。如果你需要繼續(xù)使用Navigator,則需要先yarn add react-native-deprecated-custom-components安裝皱蹦,然后從這個模塊中import煤杀,即import { Navigator } from 'react-native-deprecated-custom-components'
常用參數(shù)

configureScene,類型是function沪哺,可選沈自。通過這個參數(shù)可以修改界面在導(dǎo)航時候切換的動畫。
initialRoute辜妓,類型是對象枯途,表明最初的Route對象。一個Route簡單來說就是一個界面籍滴,Navigator用Route來區(qū)分不同的界面酪夷。
navigationBar,類型是node孽惰,導(dǎo)航欄
renderScene晚岭,類型是function,必須參數(shù)勋功,在這個方法里根據(jù)Route來渲染不同的Scene坦报。

常用函數(shù)

push(route) 库说,跳轉(zhuǎn)到某一個Route
pop(),推出當(dāng)前狀態(tài)
popToTop()片择,推出到第一個界面
popToRoute(route)潜的,推出到某一個界面

4.RN0.44版本以后主推的方案是一個單獨(dú)的導(dǎo)航庫react-navigation包括三種:StackNavigation,TabNavigation字管,DrawerNavigation

4.1 StackNavigation

StackNavigator(RouteConfigs, StackNavigatorConfig)

默認(rèn)情況下:

export default (
  routeConfigMap: NavigationRouteConfigMap, 
  stackConfig: StackNavigatorConfig = {} 
)

RouteConfigs:一個包含從路由名字到路由具體配置信息的映射, 它將指導(dǎo)navigator如何呈現(xiàn)當(dāng)前路由夏块。

舉例:

const  ModalStack  =  StackNavigator ({
     Home:{    screen: MyHomeScreen,  },
     Profile: {    path: 'people/:name',    screen: MyProfileScreen,  },
});

StackNavigatorConfig:
路由選擇:

initialRouteName-為棧設(shè)置默認(rèn)的場景,必須是路由配置里已經(jīng)配置過的一個場景纤掸。
initialRouteParams-初始路由參數(shù)
navigationOptions-場景中需要使用的默認(rèn)navigation選項(xiàng)
paths-路由配置的地址映射(A mapping of overrides for the paths set in the route configs)

視覺選項(xiàng):

mode-定義渲染與動畫樣式,取值如下:
card-使用標(biāo)準(zhǔn)的ios和Android場景樣式(default)
modal-使新場景從底部滑入脐供,這是常見的ios樣式,只在ios中有效借跪,android無效
headerMode-指定頭部(header)的渲染效果政己,取值如下:
float-渲染一個停留在頂部的header,動畫時不改動header掏愁,這是ios一種常見的模式
screen-每個場景都附有一個header,header的進(jìn)出與場景一致歇由,在Android中場用的
模式
none-去除頭部渲染
cardStyle-使用這個屬性覆蓋或者擴(kuò)充棧中個別card的默認(rèn)樣式
transitionConfig-該方法返回一個動畫對象用來覆蓋默認(rèn)的場景動畫
onTransitionStart-當(dāng)card的切換動畫即將開始時回調(diào)該方法
onTransitionEnd-當(dāng)card的切換動畫完成時回調(diào)該方法

舉例:

const MainSrceenStackNavigator = StackNavigator(
    {
        MainScreenNavigator: {screen: MainScreenNavigator},
        DiscoverDetail: {screen: DiscoverDetail},
        SettingDetail: {screen: SettingDetail}
    },
    {
        initialRouteName: 'MainScreenNavigator',
        mode:'card',
        headerMode:'screen',
    }
);

4.2 TabNavigator

TabNavigator(RouteCofigs, TabNavigatorConfig)

RouteConfigs

路由配置對象,路由名到路由配置的映射果港,告訴navigator當(dāng)前的路由

TabNavigatorConfig

tabBarComponent-用來做選擇欄的組件沦泌,比如TabBarBottom(iOS default), TabBarTop(Android default)
tabBarPosition-選擇欄位置辛掠,可以為'top'或者'bottom'
swipeEnable-是否允許在選擇間切換
animationEnabled-改變選擇時是否需要動畫
lazy-是否采用只在需要的時候臨時渲染谢谦,而不是提前渲染
tabBarOptions-配置選擇欄,具體將在下方提及萝衩。 幾個傳遞到底層路由器回挽,修改導(dǎo)航邏輯的參數(shù)
initRouteName-定義選擇欄首次加載時的路由名
order-定義選擇欄排序的路由名數(shù)組
paths-提供一個從路由名到地址配置的映射,它在routeConfing中被覆蓋
backBahavior-返回鍵是否引起選擇欄位置置于初始的選擇狀態(tài)猩谊?如果是千劈,設(shè)為initalRoute, 否則設(shè)為none。默認(rèn)為initialRoute的行為牌捷。

舉例:

const MyApp = TabNavigator({
  Home: {    screen: MyHomeScreen,  },
  Notifications: {    screen: MyNotificationsScreen,  },
}, {
  tabBarOptions: {    activeTintColor:'#e91e63',  },
});

由TabNavigator(...)方法創(chuàng)造的導(dǎo)航組件墙牌,屬性如下:
screenProps-傳遞給子場景和導(dǎo)航選項(xiàng)額外的選項(xiàng),例如:

const TabNav = TabNavigator({
  // config
});
<TabNav
  screenProps={/* this prop will get passed to the screen components as this.props.screenProps */}
/>

4.3 DrawerNavigation
DrawerNavigator(RouteConfigs, DrawerNavigatorConfig)
RouteConfigs
路由配置對象是一個由路由名字到路由配置的對象暗甥,用于告訴導(dǎo)航當(dāng)前的路由
DrawerNavigatorConfig

drawerWidth-抽屜的寬
drawerPosition-抽屜位置左(left)或右(right),默認(rèn)為左
contentComponent-填充該抽屜內(nèi)容的組件(Component),例如:導(dǎo)航的items喜滨。接受抽屜的navigation屬性。默認(rèn)為DrawerItems淋袖。下方有更多說明鸿市。
contentOptions-抽屜內(nèi)容的配置。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市焰情,隨后出現(xiàn)的幾起案子陌凳,更是在濱河造成了極大的恐慌,老刑警劉巖内舟,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件合敦,死亡現(xiàn)場離奇詭異,居然都是意外死亡验游,警方通過查閱死者的電腦和手機(jī)充岛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來耕蝉,“玉大人崔梗,你說我怎么就攤上這事±菰冢” “怎么了蒜魄?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長场躯。 經(jīng)常有香客問我谈为,道長,這世上最難降的妖魔是什么踢关? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任伞鲫,我火速辦了婚禮,結(jié)果婚禮上签舞,老公的妹妹穿的比我還像新娘秕脓。我一直安慰自己,他們只是感情好瘪菌,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布撒会。 她就那樣靜靜地躺著,像睡著了一般师妙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上屹培,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天默穴,我揣著相機(jī)與錄音,去河邊找鬼褪秀。 笑死蓄诽,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的媒吗。 我是一名探鬼主播仑氛,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了锯岖?” 一聲冷哼從身側(cè)響起介袜,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎出吹,沒想到半個月后遇伞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捶牢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年鸠珠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秋麸。...
    茶點(diǎn)故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡渐排,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出灸蟆,到底是詐尸還是另有隱情驯耻,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布次乓,位于F島的核電站吓歇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏票腰。R本人自食惡果不足惜城看,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望杏慰。 院中可真熱鬧测柠,春花似錦、人聲如沸缘滥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赃阀。三九已至擎颖,卻和暖如春榛斯,著一層夾襖步出監(jiān)牢的瞬間搂捧,已是汗流浹背驮俗。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留允跑,地道東北人王凑。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓搪柑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親索烹。 傳聞我的和親對象是個殘疾皇子工碾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容