在React Native中,我們npm install后,在項目中會根據(jù)package.json下載依賴庫,并保存在項目根目錄的node_modules文件夾內(nèi)

注意,這里的代碼是可以改的(相比安卓sdk源碼只是編譯用,apk在運行時會用手機上內(nèi)置的sdk,是不是方便多了,可以隨意調(diào)試)
那么,如何查看某個庫(以官方推薦的導(dǎo)航庫react-navigation為例)源代碼呢?我們打開node_modules目錄下的react-navigation目錄(node_modules在WebStorm下顯示成黃色)
打開src目錄,源碼就全在這里啦

下面講一個例子,我們知道react-navigation中關(guān)于導(dǎo)航條的設(shè)置(標(biāo)題,左右按鈕等)有三種方法:
1.在對應(yīng)的component中設(shè)置名為navigationOptions的static 變量

2.在

的第一個參數(shù)中

放在每一個screen對象的navigationOptions屬性中
3.在

的第二個參數(shù)中

的navigationOptions屬性中
那么三種方法的屬性配置肯定是有先后優(yōu)先順序的,優(yōu)先級高的會覆蓋優(yōu)先級低的,那么誰的優(yōu)先級高呢?
我們可以在react-navigation的src目錄下搜索navigationOptions

找到createConfigGetter.js中的源碼,這里有一段

其中navigatorScreenConfig對應(yīng)第3種方法配的navigationOptions,
componentScreenConfig對應(yīng)第1種方法,
routeScreenConfig對應(yīng)第2種方法。
(為什么?具體原因可以從調(diào)用StackNavigation(...)開始看,或者從這里回溯回去,由于這里都是export default出去的,搜索可以搜索"類名+("搜索調(diào)用的地方,如搜索"createConfigGetter(" )
并且applyConfig方法中的實現(xiàn)是

看見了嗎?第一個參數(shù)是后面疊加上去的,也就是說第一個參數(shù)優(yōu)先。
所以最終的結(jié)果是2>1>3的優(yōu)先級。
最后貼一下react-navigation的github和官方文檔
github: https://github.com/react-community/react-navigation
官方文檔: https://reactnavigation.org/docs/navigators/stack