最近决定把之前写的一个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参与讨论。
而把axios
从0.16.2
升级到0.18.0
,当请求type
为ArrayBuffer
时候居然报错,开issue,无能为力的懒惰,回滚axios
库,然后等作者解决。
高度依赖社区一些不稳定的最新版带来的恶果,会导致一些奇奇怪怪的问题,升级了好多次,之前都是无功而返,而看起来这次升级,虽然不能算是无功而返吧,但是已经让人啼笑皆非。
好吧,这样如果是一些不是那么复杂的组件或者功能,还是自己写吧,自己实现吧,不要太过依赖第三方类库。