Skip to content

useTable

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

API 参考

参数类型必填默认值描述
listApiFn(params: any) => Promise<ApiResponse<any>>-获取列表数据的 API 函数
deleteApiFn(id: number) => Promise<void>-删除单条数据的 API 函数
batchDeleteApiFn(ids: number[]) => Promise<void>-批量删除数据的 API 函数
keystring-唯一标识符,用于缓存管理
idKeystring'id'数据记录的唯一 ID 字段名
cacheEnabledbooleantrue是否启用数据缓存
dataStaleTimenumber600000数据过期时间(毫秒),默认 10 分钟
paginationbooleantrue是否启用分页
selectablebooleanfalse是否支持行选择
formRecord<string, any>{}表单初始值
rulesFormProps['rules']{}表单验证规则
columnsRef<TableProps['columns']> | TableProps['columns']-表格列定义
scrollXstring'100%'表格横向滚动宽度
scrollYRef<number | undefined> | number | undefinedundefined表格纵向滚动高度
pageCreatePathstring-创建页面路径,默认为 ${route.path}/create/new
pageEditPathstring-编辑页面路径,默认为 ${route.path}/edit/:id

返回值

表单相关

属性类型描述
formRefRef表单引用,可用于表单方法调用
formStateRef<Record<string, any>>表单状态数据
formRulesFormProps['rules']表单验证规则

表格相关

属性类型描述
tablePropsComputed<TableProps>表格属性,可直接绑定到 <a-table> 组件

状态指示器

属性类型描述
isLoadingRef<boolean>是否正在加载数据
isDeletingRef<boolean>是否正在删除单条数据
isBatchDeletingRef<boolean>是否正在批量删除数据

数据

属性类型描述
dataRef<ApiResponse<any> | undefined>原始 API 响应数据
listComputed<any[]>处理后的数据列表
totalComputed<number>数据总数

事件处理

方法类型描述
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>批量删除选中的数据

选择相关

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

缓存管理

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

分页相关(当 paginationtrue 时可用)

属性类型描述
currentPageRef<number>当前页码
currentPageSizeRef<number>每页记录数