我需要知道哪两种方法更适合实现具有庞大数据集的高性能列表。
滚动浏览列表:http://blog.getchop.io/2016/03/26/fast-and-fluid-infinite-list-with-react-native/
ListView:https://github.com/remobile/react-native-refresh-infinite-listview
答案 0 :(得分:4)
在您的情况下,您应特别注意的ListView和ScrollView之间的主要区别在于组件如何呈现子元素。 ScrollView一次渲染其子元素。 ListView具有一些附加功能,允许您平滑地向下滚动可能无限数量的元素列表。引用documentation,以下是ListView中的性能增强功能:
仅重新呈现已更改的行 - 提供给数据源的
rowHasChanged
函数告诉ListView是否需要重新呈现行,因为源数据已更改 - 有关详细信息,请参阅ListViewDataSource。- 醇>
速率限制行渲染 - 默认情况下,每个事件循环只渲染一行(使用
pageSize
道具可自定义)。这会将工作分解为更小的块,以减少渲染行时丢帧的可能性。
使用ScrollView渲染许多动态数据肯定会影响内存使用和性能,因为它会立即呈现所有子组件,即使数据没有更改,它也会重新呈现组件。因此,如果您在这种情况下只能使用两者中的任何一个,请使用ListView
组件。
如果您使用RN v> = 0.43,那么最好的选择是使用FlatList
组件。使用它的主要优点是它只在需要时才提供组件(延迟加载)。
如需更深入的解释,我强烈推荐official RN documentation。