主流列表组件分析
-
FlstList
由RN官方提供用于取代ListView,核心是以释放内存来达到优化目的。- 性能方面
如何使用得当,例如配合removeClippedSubviews、windowSize属性(removeClippedSubviews用于控制白屏逻辑、windowSize用于控制子组件的销毁)可以将内存消耗控制在一定范围之内,再加上对长列表中的网络图片的缓存控制,是可以达到一定的性能优化目的,但是对于对用户体验要求比较高的项目不建议使用,有两点是不能忍受的。
- removeClippedSubviews属性默认在Android端为true,IOS端为false,如果对性能有极致要求,我们必然是将两端统一置为true,但是IOS设备在一级列表界面的切换等操作会出现白屏问题(同级界面切换中出现),这是不能忍受的。
- 数据量达到数百条乃至更多的数据,出现的界面闪屏、抖动问题,这个在双端都有复现,只是概率大小问题。
- 瀑布流
对于瀑布流的支持FlatList组件本身做的不多,只是提供了numColumns属性,但是稍加改造是可以实现的,当然如果你的项目有非等高多列瀑布流的场景你可能需要做两件事情- 对ListItem的布局进行精确计算,核心是两个参数,height、marginTop。
- 很有可能会遇到瀑布流底部加载顺序异常问题,这时候你需要改造removeClippedSubviews属性的原生逻辑,听着有点唬人,其实不复杂,几行代码的事情。我这里有比较成熟的方案,可以在评论区留言,互相探讨学习。
- 性能方面