在React Native中,我們npm install后,在項目中會根據package.json下載依賴庫,并保存在項目根目錄的node_modules文件夾內
注意,這里的代碼是可以改的(相比安卓sdk源碼只是編譯用,apk在運行時會用手機上內置的sdk,是不是方便多了,可以隨意調試)
那么,如何查看某個庫(以官方推薦的導航庫react-navigation為例)源代碼呢?我們打開node_modules目錄下的react-navigation目錄(node_modules在WebStorm下顯示成黃色)
打開src目錄,源碼就全在這里啦
下面講一個例子,我們知道react-navigation中關于導航條的設置(標題,左右按鈕等)有三種方法:
1.在對應的component中設置名為navigationOptions的static 變量
2.在
的第一個參數中
放在每一個screen對象的navigationOptions屬性中
3.在
的第二個參數中
的navigationOptions屬性中
那么三種方法的屬性配置肯定是有先后優先順序的,優先級高的會覆蓋優先級低的,那么誰的優先級高呢?
我們可以在react-navigation的src目錄下搜索navigationOptions
找到createConfigGetter.js中的源碼,這里有一段
其中navigatorScreenConfig對應第3種方法配的navigationOptions,
componentScreenConfig對應第1種方法,
routeScreenConfig對應第2種方法。
(為什么?具體原因可以從調用StackNavigation(...)開始看,或者從這里回溯回去,由于這里都是export default出去的,搜索可以搜索"類名+("搜索調用的地方,如搜索"createConfigGetter(" )
并且applyConfig方法中的實現是
看見了嗎?第一個參數是后面疊加上去的,也就是說第一個參數優先。
所以最終的結果是2>1>3的優先級。
最后貼一下react-navigation的github和官方文檔
github: https://github.com/react-community/react-navigation
官方文檔: https://reactnavigation.org/docs/navigators/stack