为什么React Native文档说FlatList组件显示滚动列表?

时间:2018-10-10 21:47:09

标签: reactjs react-native

我正在学习反应本地,并且在this documentation上找到了以下术语。

  

如果您有一长串可以容纳在屏幕上的更多项目,则应改用FlatList。

这意味着FlatList组件用于适合屏幕显示且不可滚动的平面列表。但是在FlatList documentation上说:

  

FlatList组件显示一个滚动列表,该列表包含正在更改但结构相似的数据。

请,有人能告诉我什么意思吗?因为两个文档都相反。

1 个答案:

答案 0 :(得分:0)

从第一个文档链接开始,您对句子的理解有所误解。它实际上说:

  

如果您的屏幕上一长串的项目超出的大小,则应该使用FlatList

请注意,它说的是“ 大于”,而不是“ 那个” 。短语可以容纳在屏幕上表示您的项目不能容纳在当前显示尺寸内,因此建议使用FlatList

ScrollViewFlatList都是可滚动的组件。一些区别是:

  • ScrollView更为通用。您可以在ScrollView内嵌套任何类型的组件,它们不会抱怨。另一方面,FlatList接受结构相似的数据。
  • ScrollView中包含的
  • 组件在加载时将一起呈现。 FlatList将仅呈现其在屏幕范围内的子项,并在用户滚动到它们时呈现其余子项。

更新:

当我说“显示”时,是指手机的实际显示,而“容器”是指构成应用程序当前页面的一组组件/项目,例如文本输入的组合,按钮,视图等

请考虑以下登录表单(source):

Simple login form

此容器屏幕上的每个项目(组件)在手机的显示屏上都是可见的,因为开始时没有很多组件。您可以在不使用滚动支持的情况下逃脱。

但是,很多时候容器中有很多组件,但是一次只能容纳有限数量的显示器。其余的组件可能会在手机的显示屏上“溢出”。在这种情况下,您必须使用可滚动的组件来正确显示所有组件,以便您的应用程序用户可以到达超出显示范围的组件。例如,包含许多邮件的收件箱,或包含许多项目的待办事项列表:

Android inbox example

在上图中,手机的显示屏只能显示收件箱中的前6个项目。其余的呢?当然,您必须滚动才能看到它们!您可以使用ScrollViewFlatList来启用此处滚动的支持。

现在,如果在这种情况下使用ScrollView,则在该特定应用页面加载(即同时)时,将加载容器中的所有所有子项(收件箱项)。考虑一个包含3000个项目的收件箱。同时加载所有这些将永远是永远的!用户将等待很长时间才能加载。因此,简单的ScrollView在这里不起作用。

幸运的是,我们有FlatList

当您使用FlatList显示可滚动组件时,一次只能渲染有限数量的项目以适合当前显示(例如,上例中为6个项目)。剩下的2994个项目呢? FlatList将在用户不断向下滚动时动态呈现它们。