写在前面:
最近在尝试上手RN,遇到了不少坑。React-Native目前最新版本是0.48, 从这个版本号可以看出来,React-Native这个框架还没有完全进入稳定期。每个版本都会存在相当的问题,后续版本修复的同时,又会引入别的问题或者引入不兼容(比如用的某个类被移除支持,被Deprecated,方法改变等)。做一次升级之后需要重新稳定,经常需要改动项目代码。
问题介绍
今天介绍一个遇到的坑,是升级RN版本导致的。刚开始接入的版本是0.41,后来因为想用SectionList(0.43版本之后提供),就想升级到0.43之后的版本。首先分享官方的升级指南,推荐大家升级前先阅读,我当时就是没看,直接问的同事,所以采用的是文章下面那种老式升级方法,也就是下面几个步骤:
- 修改packages.json里RN的版本号;
- 在工程目录下运行npm install;
- 在工程目录下运行react-native upgrade;
-
clean build Android工程,进入RN页面(react-native start);
本来看着挺简单的步骤,结果再次进入RN,页面长这样:
解决方案
拿着这个错误去google,在这个页面里找到了答案。
最高票答案蛮复杂的,当时看的我一脸懵逼。后来多看了几个答案,我推断是因为我只改了ReactNative的版本号而没有改React的版本号导致的。pakcages.json里各个包的版本号必须是互相兼容的,不然就会引起这种问题。
最后我在网上找了一个可用的版本号:
"react": "16.0.0-alpha.6",
"react-native": "0.44.3",
然后重新npm install走一遍流程就可以了。
当然我后续又遇到了Navigator这个类被Depreacated的问题,好像是为了让RN更好的配合Redux, 改成了用React-Navigation。
总之RN现在还是蛮不稳定的,大家且用且珍惜。
PS:我没有尝试升级指南中写的第一种新式方法,不知道用这种方法会不会避免这个问题。但是我担心这种方法会强行覆盖一些自己的配置文件。大家有兴趣可以试试。