Skip to content

useTable

概述

useTable 是一个基于 TanStack Query (React Query) 和 Ant Design 的自定义 Hook,用于简化表格数据的获取、分页、筛选、排序和 CRUD 操作。它提供了与 Ant Design 表格组件集成的状态管理和数据流控制,同时支持数据缓存、表单集成、批量操作等功能。

API 参考

参数类型必填默认值描述
listApiFn(params: any) => Promise<ApiResponse<any>>-获取列表数据的 API 函数
deleteApiFn(id: number) => Promise<void>-删除单个项目的 API 函数
batchDeleteApiFn(ids: number[]) => Promise<void>-批量删除项目的 API 函数
keystring-用于缓存的唯一键
idKeystring'id'标识项目的唯一键字段名
cacheEnabledbooleantrue是否启用缓存功能
dataStaleTimenumber600000 (10分钟)数据过期时间(毫秒)
paginationbooleantrue是否启用分页功能
selectablebooleanfalse是否启用行选择功能
formInitialValuesRecord<string, any>{}查询表单的初始值
columnsTableProps<any>['columns']-表格列配置
scrollXstring | number'100%'表格水平滚动宽度
scrollYnumber | string-表格垂直滚动高度
pageCreatePathstring-创建页面的路径
pageEditPathstring-编辑页面的路径

返回值

表单相关

属性类型描述
formFormInstance表单实例,用于访问和控制表单

表格相关

属性类型描述
tablePropsTableProps表格属性,可直接绑定到 <Table> 组件

状态指示器

属性类型描述
isLoadingboolean是否正在加载数据
isDeletingboolean是否正在删除单条数据
isBatchDeletingboolean是否正在批量删除数据

数据

属性类型描述
dataApiResponse<any> | undefined原始 API 响应数据
listany[]处理后的数据列表
totalnumber数据总数

事件处理

方法类型描述
handleSearch() => Promise<void>执行搜索操作
handleReset() => Promise<void>重置表单并刷新数据
handleCreate(transferData?: Record<string, any> | null, query?: Record<string, any>) => Promise<void>跳转到创建页面
handleEdit(data: any, transferData?: Record<string, any> | null, query?: Record<string, any>) => Promise<void>跳转到编辑页面
handleDelete(id: number) => Promise<void>删除单条数据
handleBatchDelete() => Promise<void>批量删除选中的数据

选择相关

属性/方法类型描述
selectedStatenumber[]当前选中行的 ID 数组
selectedCountnumber当前选中行的数量
selectedIsEmptyboolean是否没有选中任何行
setSelectedState(keys: number[]) => void设置选中行
resetSelectedState() => void重置选中行

缓存管理

方法类型描述
clearSavedState() => void清除缓存的查询状态

分页相关(当 paginationtrue 时可用)

属性类型描述
currentPagenumber当前页码
setPage(page: number) => void设置页码的函数
currentPageSizenumber每页记录数
setPageSize(pageSize: number) => void设置页大小的函数