站点图标 久久日记本

rn代码升级坑记

最近决定把之前写的一个rn应用规范一下代码,首先把底层升级到官方最新版,原版本的库是在去年创建,

  "dependencies": {
    "react": "16.0.0-alpha.6",
    "react-native": "0.44.3",
    "react-navigation": "^1.0.0-beta.21",
    "axios": "^0.16.2",
    "buffer": "^5.0.6",
    "stream": "^0.0.2",
    "iconv-lite": "^0.4.18",
    "react-native-radio-buttons": "^0.15.1",
    "react-native-fs": "^2.8.1"
  },
  "devDependencies": {
    "babel-jest": "20.0.3",
    "babel-preset-react-native": "2.0.0",
    "jest": "20.0.4",
    "react-test-renderer": "16.0.0-alpha.6"
  },

后续添加了一些,也都是最新版本。

后面随着功能的添加了,发现了rn中的一些组件存在的bug。

从github上开issue,到最后解决,问题约积累越多,知道影响到功能。

例如:0.44.3版本的rn的InputText即使设置了换行功能,依然不支持输入法Enter换行,这是个很郁闷的问题,又懒得自己去写组件实现这个功能。

升级了几个版本,终于发现在最新版0.54.3(这篇文章写的时候rn又发布了新版本)中解决了。

中途升级过版本,都是因为各种问题出现而回滚。

升级到最新版之后,发现了不少已经被抛弃的用法。

 "dependencies": {
    "axios": "^0.16.2",
    "buffer": "^5.1.0",
    "iconv-lite": "^0.4.19",
    "react": "^16.3.0-alpha.1",
    "react-native": "^0.54.3",
    "react-native-fs": "^2.9.11",
    "react-native-radio-buttons": "^1.0.0",
    "react-navigation": "^1.5.8",
    "stream": "^0.0.2",
    "prop-types": "^15.6.1"
  },
  "devDependencies": {
    "babel-jest": "20.0.3",
    "babel-preset-react-native": "2.0.0", 
    "jest": "20.0.4",
    "react-test-renderer": "^16.2.0"
  },

例如:Image不支持背景图片了,有个专用的BackgroundImage组件。
FlatList会提示索引的一些问题,这似乎是个bug,已经开了issue参与讨论。
而把axios0.16.2升级到0.18.0,当请求typeArrayBuffer时候居然报错,开issue,无能为力的懒惰,回滚axios库,然后等作者解决。

高度依赖社区一些不稳定的最新版带来的恶果,会导致一些奇奇怪怪的问题,升级了好多次,之前都是无功而返,而看起来这次升级,虽然不能算是无功而返吧,但是已经让人啼笑皆非。

好吧,这样如果是一些不是那么复杂的组件或者功能,还是自己写吧,自己实现吧,不要太过依赖第三方类库。

退出移动版