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 包 feature-helper 使用教程

    在前端开发中,我们经常需要在项目中引入一些第三方库来方便开发,而 npm 是一个常用的包管理器,它可以帮助我们快速安装、升级和管理项目中的依赖项。在这篇文章中,我们将介绍一个名为 feature-he...

    3 年前
  • NPM 包 Levencli 使用教程

    Levencli 是一个用于计算两个字符串之间的 Levenshtein 距离的命令行工具。在许多文本处理场景下,我们需要找到两个字符串之间的相似性度量,Levencli 可以轻松完成这项任务。

    3 年前
  • npm 包 @lilyput/framework 使用教程

    在前端开发中,我们经常使用各种 npm 包来辅助我们开发。其中一个非常实用的 npm 包是 @lilyput/framework,它是一款轻量级的前端框架,可以帮助我们快速构建 web 应用。

    3 年前
  • npm 包 @cloudalize/appauth 使用教程

    介绍 @cloudalize/appauth 是一个用于实现 OAuth2 认证流程的 Node.js 库。它提供了一种简单直观的方式来管理 OAuth2 认证流程中的授权和访问令牌,并且可以自动处理...

    3 年前
  • npm 包 adal-angular-mo 使用教程

    前言 在前端开发中,我们经常会涉及到与后端进行交互,因此授权和身份验证等功能也变得尤为重要。在这方面,Microsoft 提供了一个称为 Azure Active Directory 的解决方案,它为...

    3 年前
  • npm包docute-emojify使用教程

    简介 docute-emojify是一款用于在docute网页中添加emoji表情的npm包,通过docute-emojify可以让docute网页更加生动和趣味。

    3 年前
  • npm 包 js-source-extractor 使用教程

    JavaScript 作为一门高级语言,有许多极其便捷的函数和工具包。但是,在前端开发过程中,可能你曾经遇到过这样的场景:需要获取一个已压缩混淆的 JavaScript 代码文件中的某个函数的源代码,...

    3 年前
  • npm 包 weekend 使用教程

    引言 weekend 是一款轻量级的 JavaScript 库,用于计算两个日期之间的周末天数。本文将介绍使用 weekend 的方法以及其详细文档和示例。 安装 weekend 可以通过 npm 包...

    3 年前
  • npm 包 @anton.npm.dev.org2/project1 使用教程

    本文将介绍 npm 包 @anton.npm.dev.org2/project1 的使用方法,该包是一个前端开发辅助工具,帮助开发者在项目中快速搭建环境和完成常用任务。

    3 年前
  • npm 包 jmp-cli 使用教程

    简介 jmp-cli 是一个 npm 包,它是一个命令行工具,可以生成一个简单的 JavaScript 模板,并将其插入到 HTML 文件中。 jmp-cli 将生成一个包含默认 JavaScript...

    3 年前
  • npm 包 phore-wallet 使用教程

    简介 phore-wallet 是一个为 Phore 区块链设计的轻量级 JavaScript 版本的 HD 钱包库,能够方便地管理钱包,创建和发送交易。 安装 在使用 phore-wallet 之前...

    3 年前
  • npm 包 svjs-utils 使用教程

    在现代前端开发中,使用 npm 包是一个必不可少的技能。在这里,我们将详细介绍 svjs-utils 这个 npm 包的使用教程。 什么是 svjs-utils? svjs-utils 是一个轻量级的...

    3 年前
  • NPM 包 disnut-theme 的使用教程

    在前端开发中,我们经常需要使用各种各样的库和框架来完成我们的项目。其中,NPM(Node Package Manager)是非常流行的一个包管理工具。今天,我们要介绍的是一个 NPM 包,它叫做 di...

    3 年前
  • npm 包 github-wiki-sidebar 使用教程

    在前端开发项目中,我们经常使用各种工具和框架去实现一些功能。npm 是一款优秀的包管理工具,它可以帮助我们快速方便地获取各种开源的工具和框架。 在本篇文章中,我们将介绍一个非常实用的 npm 包 gi...

    3 年前
  • npm 包 cloud-config-toolkit-gc-storage 使用教程

    云存储是由云服务提供商提供的一种存储方式,可以解决代码部署时需要共享数据和文件的问题。Google Cloud Storage (GCS) 是一种高可靠性和获得性的云存储解决方案。

    3 年前
  • npm包 node-eureka-client使用教程

    在前端开发过程中,我们常常需要使用一些现有的工具来提高自己的开发效率和效果。其中,npm包是一种常见的工具,它能够帮助我们快速引用和使用一些开源模块。在本文中,我们将介绍一个非常实用的npm包——no...

    3 年前
  • npm 包 @tslib/mongo 使用教程

    作为一名前端开发人员,你肯定听说过 MongoDB。MongoDB 是一种非关系型数据库,适用于处理大量松散结构化数据。如果你需要在你的项目中使用 MongoDB,那么你需要知道如何安装和使用 @ts...

    3 年前
  • npm 包 codeceptjs-puppeteer 的使用教程

    在前端开发中,我们经常需要进行自动化测试以确保代码的质量和稳定性。而现在有一种非常方便的工具可以帮助我们进行自动化测试,那就是 npm 包 codeceptjs-puppeteer。

    3 年前
  • npm 包 ng2-adal-mo 使用教程

    在前端开发中,我们经常会用到一些第三方库或工具来解决一些问题或进行快速开发。npm 是一个流行的 JavaScript 包管理器,其提供了大量的开源包供我们使用。在这篇文章中,我们将介绍如何使用一个基...

    3 年前
  • npm 包 async-script-loader 使用教程

    在前端开发中,我们通常需要加载第三方库和组件才能实现一些功能。而这些第三方库和组件往往需要通过脚本来引入,这就涉及到了脚本的异步加载问题。解决这个问题的一种方便而实用的方法是使用 npm 包 asyn...

    3 年前

相关推荐

    暂无文章