Skip to content

useTableList

专为列表页设计的数据管理 Hook,集成分页、搜索、加载状态管理,让列表页开发更轻松。

✨ 核心特性

  • 📊 分页管理 - 自动处理分页逻辑,支持页码和每页数量控制
  • 🔍 搜索集成 - 内置搜索表单数据管理和提交重置逻辑
  • ⏳ 加载状态 - 自动管理加载状态,提供良好的用户体验
  • 🔄 自动刷新 - 提供便捷的数据刷新方法
  • ⚡ 防抖优化 - 内置防抖机制,避免频繁请求
  • TypeScript - 完整的类型支持,提供优秀的开发体验

适用场景

  • 用户管理页面 - 用户列表的增删改查
  • 订单管理系统 - 订单列表的筛选和分页
  • 商品管理后台 - 商品列表的搜索和管理
  • 数据看板 - 各种数据列表的展示

快速开始

基础用法

显示代码

高级用法

显示代码

完整示例

显示代码

API

Typescript

typescript
function useTableList<T = any>(
  service: UseTableListService<T>,
  options?: UseTableListOptions
): UseTableListReturn<T>

type UseTableListService<T> = (
  params: {
    pageNo: number // 当前页码
    pageSize: number // 每页数量
    [key: string]: any // 其他搜索参数
  },
  options: {
    mergeParams?: boolean // 是否合并参数
    debounce?: boolean // 是否启用防抖
  }
) => Promise<{
  data: T[] // 数据列表
  total: number // 总数量
  [key: string]: any // 其他返回数据
}>

Options 配置

参数类型默认值描述
immediatebooleantrue是否在组件挂载时立即加载数据
formFormInstance-表单实例,可选,用于重置表单, 如不传则自动生成
defaultPageSizenumber10默认每页数量
getTotal(data: any) => number(data: any) => data?.value?.total
getList(data: any) => any[](data: any) => data?.value?.data
onReset() => Record<string, any>自定义清空处理,返回值将赋值给searchState及 searchData
mergeDatabooleantrue是否自动合并

返回值

属性类型描述
dataRef<T[]>当前页数据列表
loadingRef<boolean>加载状态
searchDataRef<Record<string, any>>提交的搜索表单数据
searchStateRef<Record<string, any>>实时搜索表单数据
search.submitFunction提交搜索,重置到第一页
search.resetFunction重置搜索条件和表单
refreshFunction刷新当前页数据
fetchDataFunction手动获取数据
loadNextPageFunction加载下一页数据
currentPagenumber当前页码
pageSizenumber每页显示的行数
totalnumber数据总数
changePageNofunction页码改变回调
changePageSizefunction每页行数改变回调
onSortChange(data: {column: any, sortBy: string, prop: string, order: any }) => void用于sortChange事件
paginationRef<PaginationProps>分页配置对象, 可直接用于 ProTable 组件
reset() => void重置搜索表单并自动刷新列表
reSearch() => void重置页码并请求数据
searchFormRefref当前搜索表单ref

提醒

  1. 如果使用重置功能,searchForm 需要关联 searchFormRef,以使用 resetFields 方法清空表单
  2. fetchData 方法默认启用防抖机制,避免频繁请求, 可在第二个参数手工关闭
  3. 分页参数使用 pageNopageSize,如参数不一致请自行在 service 中转化格式

🔗 相关链接