推荐答案
在 React Native 中,渲染列表通常使用 FlatList
或 SectionList
组件。FlatList
适用于渲染一维的、可滚动的列表,而 SectionList
则适用于渲染带有分组的列表。
使用 FlatList
渲染列表
-- -------------------- ---- ------- ------ ----- ---- -------- ------ - --------- ----- ----- ---------- - ---- --------------- ----- ---- - - - --- ---- ------ ----- -- -- - --- ---- ------ ----- -- -- - --- ---- ------ ----- -- -- -- ------- -- ----- ---------- - -- ---- -- -- - ----- -------------------- ----- ---------------------------------------- ------- -- ----- --- - -- -- - --------- ----------- ----------------------- ------------------ -- -------- -- -- ----- ------ - ------------------- ----- - ---------------- ---------- -------- --- --------------- -- ----------------- --- -- ------ - --------- --- -- --- ------ ------- ----
使用 SectionList
渲染分组列表
-- -------------------- ---- ------- ------ ----- ---- -------- ------ - ------------ ----- ----- ---------- - ---- --------------- ----- -------- - - - ------ -------- --- ----- ------ --- ----- --- ----- ---- -- - ------ -------- --- ----- ------ --- ----- --- ----- ---- -- -- ------- -- ----- ---------- - -- ---- -- -- - ----- -------------------- ----- ---------------------------------- ------- -- ----- ------------------- - -- ------- -- -- - ----- --------------------------------------------------- -- ----- --- - -- -- - ------------ ------------------- ----------------------- ----------------------------------------- -------------------- ------ -- ---- - ------ -- -- ----- ------ - ------------------- ----- - ---------------- ---------- -------- --- --------------- -- ----------------- --- -- ------ - --------- --- -- -------------- - --------- --- ---------------- ------- -------- --- -- --- ------ ------- ----
本题详细解读
FlatList
和 SectionList
的区别
- FlatList: 适用于渲染一维的、可滚动的列表。它只会渲染当前可见的列表项,因此性能较好,适合处理大量数据。
- SectionList: 适用于渲染带有分组的列表。每个分组可以有自己的标题和数据项,适合需要分组的场景。
关键属性
- data: 列表的数据源,通常是一个数组。
- renderItem: 用于渲染每个列表项的函数。
- keyExtractor: 用于为每个列表项生成唯一的 key。
- sections (仅
SectionList
): 分组列表的数据源,通常是一个包含title
和data
属性的对象数组。 - renderSectionHeader (仅
SectionList
): 用于渲染每个分组的标题。
性能优化
FlatList
的initialNumToRender
: 控制首次渲染的列表项数量,避免一次性渲染过多项导致性能问题。FlatList
的windowSize
: 控制渲染窗口的大小,默认值为 21,表示渲染当前可见项及其前后各 10 项。
其他注意事项
keyExtractor
: 确保每个列表项都有唯一的 key,避免渲染时出现问题。onEndReached
: 可以用于实现无限滚动,当用户滚动到列表底部时触发。
通过合理使用 FlatList
和 SectionList
,可以在 React Native 中高效地渲染列表数据。