前面幾篇可以說比較基礎(chǔ),這篇講一個對新手來說是一個難點——RN中的路由。
也許小伙伴們接觸過React中的路由 react-router,然而在react-router是針對瀏覽器的,在app中無用,更別說我在做RN前還沒寫過react。
不逼逼了,我們這次要講的是app中的路由——Navigator??吹竭@個詞,寫過原生應用的可能就知道是怎么回事了,沒錯這就和iOS中的NavigatorController差不多,估計就是直接用的。
Navigator組件主要有兩個變量,一個是route,一個是navigator。每一個路徑都是一個路由,navigator是裝路由的數(shù)組。理解了這個我們不難想到,把一個route路徑push進入navigator,我們的app就回跳轉(zhuǎn)過去了,反之pop出來就返回上一個頁面。
Navigator還有幾個常用屬性:
initialRoute: 初始化路徑,
renderScene: 渲染頁面邏輯函數(shù),
configureScene: 配置頁面跳轉(zhuǎn)效果。
我們來看一下簡單的實現(xiàn):?

假如我們首頁組件是Home, 我說們只需要調(diào)用
navigator.push({component: Home, ?params: {} });
就可以跳轉(zhuǎn)到主頁了。當然我在里面加了initialRoute屬性,所以默認就在首頁了。
本來寫到這這個路由就講的差不多了,但好像沒講多少,這又尷尬了。只能補點干貨了。從 上面的代碼可以看出我們的是如何來定義一個頁面的路由Route。
route有兩個參數(shù), component 和 params。component的代表該頁面的主見,params表示該組件的屬性,那么params具體是什么呢。?
首先我們需要理解 {...route.params} 這個用法。這是ES6與React結(jié)合起來的語法。如果在組件的標簽中加入了 ‘...’ 符號,component就會將這個js對象中的屬性全部作為props屬性傳到組件內(nèi)部。
其次我們就可以想一下,params里到底該該傳哪些東西。很簡單,組件里需要哪些props,我們就往params里塞哪些東西。
我們還往組件里單獨穿了一個props —— navigator,也就是路由的數(shù)組。這是干嘛呢?不把數(shù)組傳進去我們怎么返回上一頁呢?就是這么一回事,只要在組件里調(diào)用
this.props.navigator.pop();
就可以返回上一頁了同時navigator里也有其他的方法,比如jumpTo(), reset()都可以調(diào)用。
最后,大家可以思考一下:?
如果按照上述的方式實現(xiàn),那我在跳轉(zhuǎn)頁面的時候,我需要把跳轉(zhuǎn)到頁面的組件引入,我們直接把組件的名字當成唯一的標識,這樣真的好么???會有什么弊端???
留個問題給大家,下一期可能要過幾天,有個厲害的東西要研究一下!hiahiahiahiahiahiahia~