React Native 集成到现有项目有感

公司项目最开始使用Objective-C构建的,在2016年开始2.0版本的开发,那个时候老大就要求我们研究下React Native,希望一些新的功能模块使用RN来实现,那时React Native还没开始普及(Android的RN版本好像还没有出),坑也比较多,对于一些动画支持不太好,研究一段时间并且经过评估后放弃了这种技术选型;但是使用原生实现又面临Objective-CSwift的选择,尽管那个时候开发时间紧而且我也是自己在空闲时间学习过swift,并没有在实际项目中运用过,但我那时力推使用Swift语言并,且最终使用Swift开发新的功能模块,到目前为止项目中除了一个模块和一些底层的封装库还是Objective-C,其余代码都已经全部使用Swift实现。
回归正题,经过一年的沉淀,RN如今已经可以比较成熟,所以我最近在研究将项目中某些功能模块使用React Native来写的可能性,特别是那些使用Objective-C写的老模块,然而如今遇到一个棘手问题,这个旧模块(名叫成长档案),是可以无限上拉加载的,于是会出现性能问题,以及快速滑动来不及渲染而出现白屏得情况。目前还没有找到有效的解决方案,问题如下图所示:

这个长列表我是用的是Flatlist组件实现,快速滑动会出现这种空白情况,这种情况我在RNTester的Demo中也有出现.

由于没有item复用,性能也提升不上来了,官方建议我们使用原生实现这种长列表,而我查看RN实现的案例app中,包括F8、Airbnb、Instagram,尽管也有列表页面,但是都是几屏数据,并没有几百来条数据需要渲染。

项目运行地址在 Weather-ReactNative项目的develop分支

如果你有解决方案,欢迎探讨