在React Native中特漩,我們npm install后吧雹,在項(xiàng)目中會(huì)根據(jù)package.json下載依賴庫,并保存在項(xiàng)目根目錄的node_modules文件夾內(nèi)
注意涂身,這里的代碼是可以改的(相比安卓sdk源碼只是編譯用雄卷,apk在運(yùn)行時(shí)會(huì)用手機(jī)上內(nèi)置的sdk,是不是方便多了蛤售,可以隨意調(diào)試)
那么丁鹉,如何查看某個(gè)庫(以官方推薦的導(dǎo)航庫react-navigation為例)源代碼呢?我們打開node_modules目錄下的react-navigation目錄(node_modules在WebStorm下顯示成黃色)
打開src目錄悴能,源碼就全在這里啦
下面講一個(gè)例子揣钦,我們知道react-navigation中關(guān)于導(dǎo)航條的設(shè)置(標(biāo)題,左右按鈕等)有三種方法:
1.在對(duì)應(yīng)的component中設(shè)置名為navigationOptions的static 變量
2.在
的第一個(gè)參數(shù)中
放在每一個(gè)screen對(duì)象的navigationOptions屬性中
3.在
的第二個(gè)參數(shù)中
的navigationOptions屬性中
那么三種方法的屬性配置肯定是有先后優(yōu)先順序的漠酿,優(yōu)先級(jí)高的會(huì)覆蓋優(yōu)先級(jí)低的冯凹,那么誰的優(yōu)先級(jí)高呢?
我們可以在react-navigation的src目錄下搜索navigationOptions
找到createConfigGetter.js中的源碼炒嘲,這里有一段
其中navigatorScreenConfig對(duì)應(yīng)第3種方法配的navigationOptions宇姚,
componentScreenConfig對(duì)應(yīng)第1種方法,
routeScreenConfig對(duì)應(yīng)第2種方法夫凸。
(為什么浑劳?具體原因可以從調(diào)用StackNavigation(...)開始看,或者從這里回溯回去寸痢,由于這里都是export default出去的呀洲,搜索可以搜索"類名+("搜索調(diào)用的地方,如搜索"createConfigGetter(" )
并且applyConfig方法中的實(shí)現(xiàn)是
看見了嗎啼止?第一個(gè)參數(shù)是后面疊加上去的道逗,也就是說第一個(gè)參數(shù)優(yōu)先。
所以最終的結(jié)果是2>1>3的優(yōu)先級(jí)献烦。
最后貼一下react-navigation的github和官方文檔
github: https://github.com/react-community/react-navigation
官方文檔: https://reactnavigation.org/docs/navigators/stack