前言
在前端开发中,表格是一个非常常见的组件。然而,表单和表格之间的联动并不好处理。@aligov/components-use-form-table-hooks 是一个可以帮助开发者解决这个问题的 npm 包,它提供了 hooks 实现了表单和表格之间的联动。
在本篇文章,我们将详细介绍如何使用 @aligov/components-use-form-table-hooks,希望能给大家带来帮助。
安装
你可以通过 npm 或者 yarn 来安装 @aligov/components-use-form-table-hooks:
npm install @aligov/components-use-form-table-hooks
或
yarn add @aligov/components-use-form-table-hooks
使用
表单和表格
在使用 @aligov/components-use-form-table-hooks 之前,需要先了解一下它是如何联动表单和表格的。
@aligov/components-use-form-table-hooks 是通过表格的行数据来关联表单的,表格中每一行都会对应一个表单。因此,在表格的行数据变化时,表格会自动联动更新相应的表单。
API
@aligov/components-use-form-table-hooks 提供了以下两个 hooks:
- useFormTable: 主要用于处理表单和表格的联动。
- useEditableTable: 主要用于处理表格的编辑功能。
下面我们将介绍它们的用法。
useFormTable
useFormTable 是用于处理表单和表格的联动的。我们来看一下它的使用方式。
返回值
useFormTable 会返回一个对象,包含以下属性:
- form: 表单对象。
- table: 表格对象。
- formProps: 表单的属性,可以在表单组件中直接使用。
- tableProps: 表格的属性,可以在表格组件中直接使用。
- updateFormData: 用于更新表单数据。
-- -------------------- ---- ------- ------ - ------------ - ---- ------------------------------------------ ----- ------- - -- -- - ----- - ----- ------ ---------- ----------- -------------- - - -------------- -- ------- --- -- --- --展开代码
Options
当我们调用 useFormTable 时,我们需要传入一个对象作为参数,对象包含了以下项:
- dataSource: 初始表格数据。
- columns: 表格列定义。
- formConfig: 表单项定义。
-- -------------------- ---- ------- ------ - ------------ - ---- ------------------------------------------ ----- ------- - -- -- - ----- - ----- ------ ---------- ----------- -------------- - - -------------- ----------- - - ----- ------- ---- --- -------- ---- ---- --- - ---- ------ -- - ----- ------ ---- --- -------- ------- --- - ---- ------ -- - ----- ------ ---- --- -------- ------- --- - ---- ------ -- -- -------- - - ------ ------- ---------- ------- ---- ------- -- - ------ ------ ---------- ------ ---- ------ -- - ------ ---------- ---------- ---------- ---- ---------- -- -- ----------- - - ------ ------- ----- ------- ------ - - --------- ----- -------- ------- ----- ---- ------ -- -- -- - ------ ------ ----- ------ ------ - - --------- ----- -------- ------- ----- ---- ----- -- -- -- - ------ ---------- ----- ---------- ------ - - --------- ----- -------- ------- ----- ---- --------- -- -- -- -- --- -- --- --展开代码
formProps
formProps 是 useFormTable 返回值中的一个属性,用于传递表单的属性。下面是各个属性的说明:
- onFinish: 表单提交时的回调函数。
- onValuesChange: 当表单数据变化时的回调函数。
- layout: 表单的布局。
- initialValues: 表单的初始值。
- form: antd 表单对象。
-- -------------------- ---- ------- ------ - ------------ - ---- ------------------------------------------ ----- ------- - -- -- - ----- - ----- ------ ---------- ----------- -------------- - - -------------- -- ------- --- ------ - ----- --------------- ---------- ------------ ------------ ------ -- ------------ ---------- ----------- ----------- ------------ -- ------------ ---------- --------------- --------------- ------ -- ------------ ------- -------------- ------------------ ------ --------- ------- -- --展开代码
tableProps
tableProps 是 useFormTable 返回值中的一个属性,用于传递表格的属性。下面是各个属性的说明:
- columns: 表格列定义。
- dataSource: 数据源。
- rowKey: 用于指定每一行的 key。
- pagination: 分页配置。
- editRowKey: 可编辑行的 key。
- setEditRowKey: 用于设置可编辑行的 key。
- saveRow: 保存当前可编辑行的值。
- cancelRow: 取消当前可编辑行的编辑并还原其初始值。
-- -------------------- ---- ------- ------ - ------------ - ---- ------------------------------------------ ----- ------- - -- -- - ----- - ----- ------ ---------- ----------- -------------- - - -------------- -- ------- --- ------ - ------ --------------- -- -- --展开代码
updateFormData
updateFormData 是 useFormTable 返回值中的一个方法,用于更新表单数据。下面是它的使用方式:
const onUpdateName = () => { updateFormData({ name: 'Jim', }); };
useEditableTable
useEditableTable 主要用于表格的编辑功能,下面我们来介绍一下它。
返回值
useEditableTable 会返回一个对象,包含以下属性:
- editRowKey: 可编辑行的 key。
- setEditRowKey: 用于设置可编辑行的 key。
- saveRow: 用于保存当前可编辑行的值。
- cancelRow: 用于取消当前可编辑行的编辑并还原其初始值。
-- -------------------- ---- ------- ------ - ---------------- - ---- ------------------------------------------ ----- ------- - -- -- - ----- - ----------- -------------- -------- --------- - - ------------------ -- ------- --- -- --- --展开代码
Options
当我们调用 useEditableTable 时,我们需要传入一个对象作为参数,对象包含了以下项:
- columns: 表格列定义。
-- -------------------- ---- ------- ------ - ---------------- - ---- ------------------------------------------ ----- ------- - -- -- - ----- - ----------- -------------- -------- --------- - - ------------------ -------- - - ------ ------- ---------- ------- ---- ------- -- - ------ ------ ---------- ------ ---- ------ -- - ------ ---------- ---------- ---------- ---- ---------- -- -- --- -- --- --展开代码
editRowKey
editRowKey 是 useEditableTable 返回值中的一个属性,用于指定当前可编辑行的 key。
setEditRowKey
setEditRowKey 是 useEditableTable 返回值中的一个方法,用于设置当前可编辑行的 key。
const onEditRow = (record) => { setEditRowKey(record.key); };
saveRow
saveRow 是 useEditableTable 返回值中的一个方法,用于保存当前可编辑行的值。
const onSaveRow = () => { saveRow(); };
cancelRow
cancelRow 是 useEditableTable 返回值中的一个方法,用于取消当前可编辑行的编辑并还原其初始值。
const onCancelRow = () => { cancelRow(); };
示例代码
-- -------------------- ---- ------- ------ - ----- ------ ------------ ------- ----- - ---- ------- ------ - ------------- ---------------- - ---- ------------------------------------------ ----- ------- - -- -- - ----- - ----- ------ ---------- ----------- -------------- - - -------------- ----------- - - ----- ------- ---- --- -------- ---- ---- --- - ---- ------ -- - ----- ------ ---- --- -------- ------- --- - ---- ------ -- - ----- ------ ---- --- -------- ------- --- - ---- ------ -- -- -------- - - ------ ------- ---------- ------- ---- ------- -- - ------ ------ ---------- ------ ---- ------ -- - ------ ---------- ---------- ---------- ---- ---------- -- - ------ --------- ---- --------- ------- ------ ------- -- - -- ----------- --- ----------------- - ------ - ----- ------- ----------- ----------------------- - -- --------- ------- ----------- ------------------------- - -- --------- ------ -- - ---- - ------ - ------- ----------- ----------- -- - -------------------------------- -- - -- --------- -- - -- -- -- ----------- - - ------ ------- ----- ------- ------ - - --------- ----- -------- ------- ----- ---- ------ -- -- -- - ------ ------ ----- ------ ------ - - --------- ----- -------- ------- ----- ---- ----- -- -- -- - ------ ---------- ----- ---------- ------ - - --------- ----- -------- ------- ----- ---- --------- -- -- -- -- --- ----- - ----------- -------------- -------- --------- - - ------------------ -------- - - ------ ------- ---------- ------- ---- ------- ------- ------ ------- -- - -- ----------- --- ----------------- - ------ - ---------- --------------- -------- ------- - --- ------ -- ------------ -- - ---- - ------ -------------------- - -- -- - ------ ------ ---------- ------ ---- ------ ------- ------ ------- -- - -- ----------- --- ----------------- - ------ - ---------- -------------- -------- ------- - --- ------------ -- ------------ -- - ---- - ------ -------------------- - -- -- - ------ ---------- ---------- ---------- ---- ---------- ------- ------ ------- -- - -- ----------- --- ----------------- - ------ - ---------- ------------------ -------- ------- - --- ------ -- ------------ -- - ---- - ------ -------------------- - -- -- -- --- ------ - -- ----- --------------- ---------- ------------ ------------ ------ -- ------------ ---------- ----------- ----------- ------------ -- ------------ ---------- --------------- --------------- ------ -- ------------ ------- -------------- ------------------ ------ --------- --- -- --- -- ------- ------ -------- --------------- -------- ------------- ----------------------- ------------- --------- - -- -- --- -- --展开代码
总结
在本篇文章,我们详细介绍了如何使用 @aligov/components-use-form-table-hooks 实现表单和表格的联动,及表格的编辑功能。希望这篇文章能够对大家有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/150803