npm 包 @preamp/tables 使用教程

阅读时长 20 分钟读完

@preamp/tables 是一款基于 React 的数据表格组件库,由 Preamp 团队开发维护。它提供了丰富的表格组件,包括基础表格、带筛选和排序的表格、带分页的表格等。这款组件库提供了简单易用的 API,支持定制和扩展,适用于各种场景的数据展示和数据处理。

安装和使用

使用 @preamp/tables 非常简单,只需要在项目中安装即可。下面是具体的安装方式:

  1. 首先,打开终端,进入项目的根目录,执行以下命令安装 @preamp/tables
  1. 安装完成后,在代码中引入 @preamp/tables
  1. 然后,可以在组件中使用 TableColumn 组件:
-- -------------------- ---- -------
------ ----- ---- --------
------ - ------ ------ - ---- -----------------

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

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

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

基础表格

下面是一个基本的表格示例,包含列名和数据列。这个表格没有排序、筛选和分页功能。

表格属性

  • columns: 列定义
  • dataSource: 数据源数组
  • rowKey: 每行数据的唯一标识符
  • loading: 数据是否正在加载
  • pagination: 分页配置项

列属性

  • title: 列名
  • key: 列的唯一标识符
  • dataIndex: 列数据在数据源数组中的键名

带筛选和排序的表格

@preamp/tables 提供了用于筛选和排序的多种表头组件,可以轻松地添加筛选和排序功能。下面是一个示例,包含了筛选框和排序功能。这个表格的数据规模较小,只有两条数据,因此并没有启用分页功能。

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

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

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

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

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

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

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

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

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

表头属性

筛选和排序功能都是通过表头的属性来实现的。

  • filterDropdown: 筛选框(Node)
  • filterIcon: 筛选图标(Node)
  • onFilter: 筛选回调函数
  • filters: 筛选选项数组
  • sorter: 排序回调函数

操作属性

  • onChange: 筛选和排序的回调函数

带分页的表格

@preamp/tables 还支持带分页的表格,可以通过属性配置启用分页功能。下面是一个示例,实现了带分页、筛选和排序的表格。这个表格的数据规模较大,共有 100 条数据。

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

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

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

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

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

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

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

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

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

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

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

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

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

分页属性

  • pagination: 分页配置项
  • onPageSizeChange: 每页数量更改回调函数

定制

@preamp/tables 的设计思路是尽量简单易用,同时也提供了一定程度的定制功能,可以满足一些特殊的需求。

自定义表格单元格

@preamp/tables 的表格单元格默认是文本单元格,可以通过自定义单元格渲染函数来定制单元格的样式和结构。下面是一个自定义单元格渲染函数的示例:

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

自定义筛选菜单

@preamp/tables 的筛选菜单默认是一个下拉菜单,可以通过自定义筛选菜单的渲染函数来定制筛选菜单的样式和结构。下面是一个自定义筛选菜单的示例:

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

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

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

定制样式

@preamp/tables 没有默认的样式,可以通过 CSS 或 LESS 文件来自定义样式。可以通过全局样式、局部样式、覆盖样式、继承样式等方式对组件样式进行定制。

下面是一个简单的全局样式的示例:

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

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

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

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

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

总结

@preamp/tables 为 React 应用提供了一款高效、灵活的表格组件库,支持基础表格、筛选和排序、分页、自定义、样式定制等多种功能。通过本文的介绍和示例,读者应该能够对 @preamp/tables 的使用和定制有初步的了解和掌握。在实际开发过程中,可以根据实际需求,灵活使用组件提供的 API 和样式,让前端表格展示和数据处理更加简洁高效。

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