寫在前面:
最近在嘗試上手RN,遇到了不少坑。React-Native目前最新版本是0.48, 從這個版本號可以看出來,React-Native這個框架還沒有完全進入穩(wěn)定期。每個版本都會存在相當?shù)膯栴},后續(xù)版本修復的同時,又會引入別的問題或者引入不兼容(比如用的某個類被移除支持,被Deprecated,方法改變等)。做一次升級之后需要重新穩(wěn)定,經(jīng)常需要改動項目代碼。
問題介紹
今天介紹一個遇到的坑,是升級RN版本導致的。剛開始接入的版本是0.41,后來因為想用SectionList(0.43版本之后提供),就想升級到0.43之后的版本。首先分享官方的升級指南,推薦大家升級前先閱讀,我當時就是沒看,直接問的同事,所以采用的是文章下面那種老式升級方法,也就是下面幾個步驟:
- 修改packages.json里RN的版本號;
- 在工程目錄下運行npm install;
- 在工程目錄下運行react-native upgrade;
-
clean build Android工程,進入RN頁面(react-native start);
本來看著挺簡單的步驟,結(jié)果再次進入RN,頁面長這樣:
RN錯誤.jpg
解決方案
拿著這個錯誤去google,在這個頁面里找到了答案。
最高票答案蠻復雜的,當時看的我一臉懵逼。后來多看了幾個答案,我推斷是因為我只改了ReactNative的版本號而沒有改React的版本號導致的。pakcages.json里各個包的版本號必須是互相兼容的,不然就會引起這種問題。
最后我在網(wǎng)上找了一個可用的版本號:
"react": "16.0.0-alpha.6",
"react-native": "0.44.3",
然后重新npm install走一遍流程就可以了。
當然我后續(xù)又遇到了Navigator這個類被Depreacated的問題,好像是為了讓RN更好的配合Redux, 改成了用React-Navigation。
總之RN現(xiàn)在還是蠻不穩(wěn)定的,大家且用且珍惜。
PS:我沒有嘗試升級指南中寫的第一種新式方法,不知道用這種方法會不會避免這個問題。但是我擔心這種方法會強行覆蓋一些自己的配置文件。大家有興趣可以試試。