React Native 中如何渲染列表?

推荐答案

在 React Native 中,渲染列表通常使用 FlatListSectionList 组件。FlatList 适用于渲染一维的、可滚动的列表,而 SectionList 则适用于渲染带有分组的列表。

使用 FlatList 渲染列表

-- -------------------- ---- -------
------ ----- ---- --------
------ - --------- ----- ----- ---------- - ---- ---------------

----- ---- - -
  - --- ---- ------ ----- -- --
  - --- ---- ------ ----- -- --
  - --- ---- ------ ----- -- --
  -- -------
--

----- ---------- - -- ---- -- -- -
  ----- --------------------
    ----- ----------------------------------------
  -------
--

----- --- - -- -- -
  ---------
    -----------
    -----------------------
    ------------------ -- --------
  --
--

----- ------ - -------------------
  ----- -
    ---------------- ----------
    -------- ---
    --------------- --
    ----------------- ---
  --
  ------ -
    --------- ---
  --
---

------ ------- ----

使用 SectionList 渲染分组列表

-- -------------------- ---- -------
------ ----- ---- --------
------ - ------------ ----- ----- ---------- - ---- ---------------

----- -------- - -
  -
    ------ -------- ---
    ----- ------ --- ----- --- ----- ----
  --
  -
    ------ -------- ---
    ----- ------ --- ----- --- ----- ----
  --
  -- -------
--

----- ---------- - -- ---- -- -- -
  ----- --------------------
    ----- ----------------------------------
  -------
--

----- ------------------- - -- ------- -- -- -
  ----- ---------------------------------------------------
--

----- --- - -- -- -
  ------------
    -------------------
    -----------------------
    -----------------------------------------
    -------------------- ------ -- ---- - ------
  --
--

----- ------ - -------------------
  ----- -
    ---------------- ----------
    -------- ---
    --------------- --
    ----------------- ---
  --
  ------ -
    --------- ---
  --
  -------------- -
    --------- ---
    ---------------- -------
    -------- ---
  --
---

------ ------- ----

本题详细解读

FlatListSectionList 的区别

  • FlatList: 适用于渲染一维的、可滚动的列表。它只会渲染当前可见的列表项,因此性能较好,适合处理大量数据。
  • SectionList: 适用于渲染带有分组的列表。每个分组可以有自己的标题和数据项,适合需要分组的场景。

关键属性

  • data: 列表的数据源,通常是一个数组。
  • renderItem: 用于渲染每个列表项的函数。
  • keyExtractor: 用于为每个列表项生成唯一的 key。
  • sections (仅 SectionList): 分组列表的数据源,通常是一个包含 titledata 属性的对象数组。
  • renderSectionHeader (仅 SectionList): 用于渲染每个分组的标题。

性能优化

  • FlatListinitialNumToRender: 控制首次渲染的列表项数量,避免一次性渲染过多项导致性能问题。
  • FlatListwindowSize: 控制渲染窗口的大小,默认值为 21,表示渲染当前可见项及其前后各 10 项。

其他注意事项

  • keyExtractor: 确保每个列表项都有唯一的 key,避免渲染时出现问题。
  • onEndReached: 可以用于实现无限滚动,当用户滚动到列表底部时触发。

通过合理使用 FlatListSectionList,可以在 React Native 中高效地渲染列表数据。

纠错
反馈