FlatList 是 React Native 的组件,用于高效地渲染数据的可滚动列表。它延迟渲染项目(仅渲染可见项),使其对于长列表的性能优异——远优于在 ScrollView 中对数据进行映射。
FlatList — 高效的列表
{ , , } ;
() {
(
);
}
FlatList 是 React Native 的组件,用于高效地渲染数据的可滚动列表。它延迟渲染项目(仅渲染可见项),使其对于长列表的性能优异——远优于在 ScrollView 中对数据进行映射。
{ , , } ;
() {
(
);
}
FlatList 接受 data 数组、renderItem 函数(渲染每一项)和 keyExtractor(唯一键)——并高效地渲染项目。
❌ ScrollView with data.map(...) → renders ALL items at once (even off-screen) →
slow/memory-heavy for long lists
✅ FlatList → renders only VISIBLE items lazily (virtualization); recycles as you scroll →
performant for long/large lists
→ Use FlatList for any non-trivial list; ScrollView only for small, fixed content.
✓ onEndReached → load more data when scrolling near the end (INFINITE SCROLL / pagination)
✓ refreshing / onRefresh → PULL-TO-REFRESH
✓ ListHeaderComponent / ListFooterComponent / ItemSeparatorComponent
✓ numColumns → grid layout; horizontal → horizontal list
✓ SectionList → for sectioned/grouped lists
理解 FlatList 至关重要,因为显示数据列表几乎是所有应用的通用需求,而 FlatList 是 React Native 中标准的、高性能的方式,所以这是必备知识。
几乎每个应用都会显示列表(信息流、消息、搜索结果),并且高效地显示很重要。
The key insight is that FlatList renders items lazily(仅渲染可见项,通过虚拟化、滚动时回收)——使其对于长列表性能优异,与使用 ScrollView 加 data.map() 的常见误区形成对比,后者一次渲染所有项目(即使在屏幕外),对于长列表会导致速度缓慢和内存问题。
理解对任何非平凡列表使用 FlatList(仅对小型、固定内容使用 ScrollView)是重要的实用知识,可以防止实际的性能问题。
理解基本用法(data 数组、renderItem 函数和用于唯一键的 keyExtractor)是必要的,以便渲染列表。
理解有用功能——onEndReached(用于无限滚动/分页,在接近末尾时加载更多数据——一个非常常见的需求)、pull-to-refresh、header/footer/separator 组件、网格和水平布局,以及用于分组列表的 SectionList——涵盖了应用具有的常见列表需求。
由于高效显示列表是几乎通用的应用需求,而 FlatList(具有其延迟渲染/虚拟化)是标准的、高性能的 React Native 解决方案——远优于朴素的 ScrollView+map 方法——理解 FlatList 是必备的、经常应用的 React Native 知识——一个核心组件,用于在几乎每个应用中显示数据列表,其中理解其高效的延迟渲染和功能(如无限滚动和 pull-to-refresh)对于构建高性能、功能性列表是基础的,是 React Native 开发的标准技能。