npm 包 ttk-table-app-edittable 使用教程

npm 包 ttk-table-app-edittable 是一个可编辑表格组件,适用于前端开发中需要展示和编辑表格数据的场景。本文将为您介绍该组件的使用方法及相关注意事项。

安装

使用 npm 进行安装:

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

使用方法

在您的项目中引入该组件:

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

创建表格组件并传入数据:

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

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

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

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

其中,options 对象可接受以下参数:

参数 类型 默认值 描述
height number 300 表格组件的高度
editable boolean true 是否可编辑
resizable boolean true 是否可伸缩
columns Array<{ label, field }> 表格列的配置
data Array<{ id, ... }> 表格数据
editor<type> (value: any) => React.React 编辑器组件,type 为对应列的 editor 参数的值
render<type> (value: any, row: {...}) => React.React 单元格渲染组件,type 为对应列的 editor 参数的值

列配置

columns 数组中的每一项代表一列的配置信息,示例如下:

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

其中,label 为列的名称,field 为该列对应的数据属性名,editor 为编辑器类型,options 为下拉框选项(仅在 editor === 'select' 时使用)。

目前支持的编辑器类型有:

描述
input 文本框
number 数字输入框
select 下拉框
date 日期选择器
datetime 日期时间选择器
time 时间选择器
switch 开关
checkbox 多选框
radio 单选框
textarea 多行文本框
password 密码输入框
email 邮箱输入框
color 颜色选择器
file 单文件选择器
image 单图片选择器
files 多文件选择器
images 多图片选择器
rich-text 富文本框
markdown Markdown 文本框
json-editor JSON 数据编辑器

其中,textarea、password、email、file、image、files 和 images 编辑器需要通过增加相应的 props 进行配置:

----- ------- - -
  - ------ ----- ------ ------- ------- ------- --
  - ------ ----- ------ -------- ------- ----------- ----- - --
  - ------ ----- ------ ----------- ------- ---------- --
  - ------ ----- ------ --------- ------- -------- ------- ---------- -------- ---- --
  - ------ ----- ------ -------------- ------- -------- ------- --------------- --
-
参数 类型 描述
rows number textarea 的行数
accept string 限制上传文件的类型
preview boolean 是否可以预览图片
minWidth number 图片最小宽度(仅在 editor === 'image' 时有效)
maxWidth number 图片最大宽度(仅在 editor === 'image' 时有效)
minHeight number 图片最小高度(仅在 editor === 'image' 时有效)
maxHeight number 图片最大高度(仅在 editor === 'image' 时有效)
maxSize number 上传文件的大小限制(以字节为单位,默认为 10M)
urls Array 已上传的图片/文件的下载链接(仅在 editor === 'file' 或 'image' 时有效)

表格数据

data 数组中的每一项代表一条数据记录,示例如下:

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

其中,id 为该条数据的唯一标识符。当使用内置的 CRUD 函数时,会通过 id 来确定对应的数据记录。data 中的数据格式必须和 columns 中配置的字段对应。如果 data 数组中的数据数量很大,可以考虑分页加载数据。

编辑器组件

编辑器组件用于在单元格中显示和编辑数据。组件接收一个 value 属性,根据不同的编辑器类型,它可以是字符串、数字、布尔值、Date 对象等。

例如,用 input 编辑器编辑一个字符串的数据:

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

然后在 columns 中将 editor 属性设置为 'input',即可使用该编辑器。

单元格渲染

在渲染表格时,你可能需要根据不同的数据类型和状态,使用不同的方式来呈现单元格内容。你可以使用 render<type> 属性来指定一个渲染器组件。渲染器组件接收一个 value 和 row(表示该行对应的数据记录),返回一个 React 元素。

例如,用自定义渲染器渲染一个布尔值:

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

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

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

然后在 columns 中将 renderboolean 属性设置为 MyBooleanRenderer,即可使用该渲染器。

方法和事件

表格组件提供了一些常用的方法和事件:

getSelectedRows()

获取所有被选中的行(返回值为一个数组)

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

getChangedRows()

获取所有被修改过的行(返回值为一个数组)

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

getAddedRows()

获取所有被新添加的行(返回值为一个数组)

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

getRemovedRows()

获取所有被删除的行(返回值为一个数组)

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

getRowById(id: string | number)

根据数据记录的唯一标识符获取对应的行数据(返回值为一个对象)

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

addRow(rowData: object)

在表格中添加一行数据(rowData 是一个对象)

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

removeRow(id: string | number)

根据数据记录的唯一标识符删除一行数据(返回值为一个对象)

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

updateRow(id: string | number, rowData: object)

根据数据记录的唯一标识符更新一行数据(rowData 是一个对象)

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

onSave(callback: (rows: object[]) => void)

在点击保存按钮后触发回调函数(函数接收一个 rows 参数,表示所有被修改过的数据记录)

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

onCancel(callback: () => void)

在点击取消按钮后触发回调函数

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

onAddRow(callback: (row: object) => void)

在新增一行数据时触发回调函数

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

onRemoveRow(callback: (id: string | number) => void)

在删除一行数据时触发回调函数

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

小结

使用 npm 包 ttk-table-app-edittable,可以快速地在前端项目中创建一个可编辑表格组件。你可以使用丰富的内置编辑器和渲染器来满足表格展示和编辑的需求,并通过提供的方法和事件,对表格数据进行增删改查操作。希望本文对您有所帮助。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60065b45c6eb7e50355dbec0


猜你喜欢

  • npm 包 slate-text-table 使用教程

    在前端开发中,展示列表数据时,表格是一个经常使用的方式。但是通过 HTML 和 CSS 来手动创建表格往往十分繁琐。这时便可以借助第三方的 npm 包,提高开发效率。

    3 年前
  • npm 包 each.js 使用教程

    什么是 each.js each.js 是一个 JavaScript 库,它提供了一些简单的方法来帮助你在数组、对象、Map、Set 等各种数据结构中进行迭代。 each.js 具有以下特点: 独立...

    3 年前
  • 使用npm包Evalx——JS代码执行器

    简介 Evalx是一个简单易用的NPM包,用于在Node.js和浏览器中执行JavaScript代码。它可以方便地将字符串解析为可执行代码,从而实现动态代码执行。这种技术被广泛应用于Web开发、数据处...

    3 年前
  • npm 包 slate-delete-one-line 使用教程

    在前端开发中,我们经常使用各种类库和工具来提高开发效率和代码的可读性。其中,slate-delete-one-line 是一个基于 Slate 的删除插件,可以帮助我们快速删除一行文本。

    3 年前
  • npm 包 frank-test-1-1 使用教程

    frank-test-1-1 是一款基于 Node.js 平台的前端测试工具包。它提供了多种测试工具和库,用于支持前端开发的测试流程。本教程将会详细介绍如何使用 frank-test-1-1 进行前端...

    3 年前
  • npm 包 homebridge-timer-switch 使用教程

    homebridge-timer-switch 是一个开源的 npm 包,它提供了一个用于控制智能插座的插件,可以使用 homebridge 集成 Apple 的 HomeKit 平台。

    3 年前
  • npm 包 timer-switch 使用教程

    随着前端技术的不断进步,越来越多的开发者将开放包作为自己项目的重要组成部分。而 npm 是一个优秀的开源包管理工具,它让开发者可以方便地发布、安装和更新自己的 npm 包。

    3 年前
  • npm 包 xxx-videojs 使用教程

    介绍 xxx-videojs 是一个基于 video.js 的 npm 包,它可以在前端页面中便捷地嵌入视频。本文将介绍如何使用 xxx-videojs 包。 安装 在项目的根目录下,使用 npm 安...

    3 年前
  • npm 包 Mars-fastclick 使用教程

    在现代 Web 开发中,我们经常需要处理点击响应事件。然而,移动设备的响应速度可能会比较缓慢,这就需要一个能够优化点击响应速度的工具。在此情况下,Mars-fastclick 库就是一款非常不错的选择...

    3 年前
  • npm 包 wechaty-dev 使用教程

    前言 我们已经很久没有使用传统方式在微信群中聊天了。现在都是通过类似于个人助理的微信机器人来达到这一目的。而 Wechaty 是一款优秀的开源微信机器人框架,支持多种语言,而这里我们将要介绍是使用 w...

    3 年前
  • npm包react-observable-auth0使用教程

    前言 在现代Web开发中,身份验证是一个重要的方面。为了让身份验证变得更加简单和标准化,一个叫做Auth0的服务逐渐成为了一个受欢迎的身份验证解决方案。而为了方便在React项目中使用Auth0服务,...

    3 年前
  • npm 包 atlas-scalar-noise 使用教程

    在前端开发中,生成随机的噪声图像是一项很重要的任务。噪声图像可以用于创建种子纹理,仿真地形和天气效果等。随着计算机科学领域的发展,现在许多算法被用来生成噪声。 奥古斯特 · 柯内利(Auguste K...

    3 年前
  • npm 包 atlas-vector-noise 使用教程

    在前端开发中,常常需要在网页或者应用中使用到一些复杂的图像或者效果。在这种情况下,我们需要使用一些工具或者技术来帮助我们实现这些功能。其中,atlas-vector-noise 是一个非常好用的 np...

    3 年前
  • npm 包 Co-Web-Worker 使用教程

    什么是 Co-Web-Worker Co-Web-Worker 是一个 npm 包,它可以在 Web Worker 中运行 Generator 函数,支持使用 JavaScript 中的 co 模块进...

    3 年前
  • npm 包 my-key-config 使用教程

    在前端开发中,管理所有的开发配置是一个复杂的任务。my-key-config,一个npm包,可以帮助我们轻松管理这些配置。本文将介绍如何使用这个包,并提供示例代码和深入理解。

    3 年前
  • npm 包 price-monitoring 使用教程

    前言 在当今经济环境下,几乎所有的商品价格都会不断地上涨和下跌。对于那些经常在线购物的消费者而言,关注他们想要购买的商品的价格变化是非常重要的。通过这种方式,他们可以确定何时购买最佳的时机,并以最佳的...

    3 年前
  • npm 包 react-google-structured-data 使用教程

    什么是 react-google-structured-data react-google-structured-data 是一个 npm 包,用于在 React 应用程序中生成和添加结构化数据,以帮...

    3 年前
  • npm 包 react-native-live-cropper 使用教程

    react-native-live-cropper 是一个基于 React Native 的可实时裁剪和缩放图像的 npm 包。它提供了一个简单的 API,使得开发人员最终能够得到一个裁剪后的图像。

    3 年前
  • npm 包 react-native-promise 使用教程

    1. 简介 react-native-promise 是一个基于 Promise 的 React Native 插件,使用它可以方便地通过 Promise 对象来处理异步事件。

    3 年前
  • npm 包 oncloud.flot 使用教程

    在现今的前端开发中,数据可视化已经成为了一个非常重要的部分。而在数据可视化的过程中,Flot 是一款非常受欢迎的 JavaScript 图表库。而 oncloud.flot 是一个基于 Flot 的封...

    3 年前

相关推荐

    暂无文章