在 React 中实现表格组件

阅读时长 10 分钟读完

表格是 Web 应用中最常用的 UI 元素之一,React 作为前端开发中最流行的框架之一,我们可以用它非常容易地实现一个灵活、易用的表格组件。

前置知识

在开始开发表格组件前,我们需要对 React 的基础知识以及 JSX 语法有一定的了解。

推荐先学习React 官方文档,并掌握 JSX 语法和组件的使用方式。

表格组件结构

通常情况下,一个表格组件会包含以下子组件:

  • 表头组件
  • 表格体组件
  • 表格行组件

一个典型的表格组件的结构可能如下所示:

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

实现表头和表格体组件

我们可以将表头和表格体组件分别拆成两个组件,每个组件只负责渲染对应的部分内容。

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

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

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

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

这样,我们就可以在 Table 组件中使用 TableHeader 和 TableBody 组件,实现表格的渲染。

实现可排序、可编辑表格

接下来,我们可以进一步完善表格组件的功能,实现表格行的排序和编辑。

排序表格

为了实现排序功能,我们需要记录表格的排序列和排序方式。而为了保证组件内部状态的一致性,我们需要将 Table 组件转换为类组件。

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

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

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

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

在 TableHeader 组件中,我们需要改变表头文本的样式,并给每一列添加点击事件,以改变表格的排序状态。

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

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

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

在 TableBody 组件中,我们通过对 rows 数组中的元素进行排序并渲染,实现表格行的排序效果。

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

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

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

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

编辑表格

在现代 Web 应用中,我们经常需要让用户修改表格数据。接下来,我们将实现一个可编辑的表格组件。

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

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

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

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

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

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

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

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

在实现过程中,我们使用了 useState、扩展运算符和解构赋值等 ES6 语法,提高了代码的可读性和可维护性。

小结

在本文中,我们详细地介绍了如何使用 React 实现一个灵活、易用的表格组件,并引入了表格排序和编辑功能。通过阅读本文,你可以加深对 React 组件的理解,并掌握实现可交互表格的技巧。

感谢阅读,希望本文对你有所帮助!

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67825ebc935627c900044c81

纠错
反馈