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