76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
| import type { AntdTableOptions, AntdTableResult, Data, Params, Service } from "ahooks/lib/useAntdTable/types";
 | ||
| import type { FormInstance } from "antd/es/form";
 | ||
| 
 | ||
| type FormValues = Record<string, any>;
 | ||
| /**
 | ||
|  * useTable 钩子的选项参数
 | ||
|  */
 | ||
| export interface UseTableOptions<TData extends Data, TParams extends Params> extends Omit<AntdTableOptions<TData, TParams>, "defaultParams" | "form"> {
 | ||
|   /** 是否使用分页,默认是 */
 | ||
|   usePagination?: boolean;
 | ||
|   /** 默认分页参数,默认 { current: 1; pageSize: 10 } */
 | ||
|   defaultPagination?: { current: number; pageSize: number };
 | ||
|   /** 是否使用存储查询条件,默认是 */
 | ||
|   useStorageQueryCriteria?: boolean;
 | ||
|   /** 额外参数 */
 | ||
|   params?: FormValues | (() => FormValues);
 | ||
|   /** 表单数据转换函数,在每次请求之前调用,接收当前搜索的表单项,要求返回一个对象 */
 | ||
|   transform?: (formData: FormValues) => FormValues;
 | ||
|   /** 回调函数 */
 | ||
|   callback?: (list: any[], data: any) => void;
 | ||
|   /** 表单实例(通过 Form.useForm() 创建) */
 | ||
|   form?: FormInstance;
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * 基础分页配置接口
 | ||
|  */
 | ||
| export interface BasePaginationConfig {
 | ||
|   /** 当前页码 */
 | ||
|   current: number;
 | ||
|   /** 每页数量 */
 | ||
|   pageSize: number;
 | ||
|   /** 总数 */
 | ||
|   total: number;
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * 扩展分页配置接口
 | ||
|  */
 | ||
| export interface ExtendedPaginationConfig extends BasePaginationConfig {
 | ||
|   /** 显示快速跳转 */
 | ||
|   showQuickJumper: boolean;
 | ||
|   /** 显示页码选择器 */
 | ||
|   showSizeChanger: boolean;
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * useTable 钩子返回的结果
 | ||
|  */
 | ||
| export interface UseTableResult<TData extends Data, TParams extends Params> extends AntdTableResult<TData, TParams> {
 | ||
|   /** 表格属性 */
 | ||
|   tableProps: {
 | ||
|     /** 表格数据 */
 | ||
|     dataSource: TData["list"];
 | ||
|     /** 表格加载状态 */
 | ||
|     loading: boolean;
 | ||
|     /** 表格改变 */
 | ||
|     onChange: (pagination: any, filters?: any, sorter?: any) => void;
 | ||
|     /** 分页属性 */
 | ||
|     pagination: false | ExtendedPaginationConfig;
 | ||
|     [key: string]: any;
 | ||
|   };
 | ||
|   /** 查询方法,等于直接调用 search.submit */
 | ||
|   getData: () => void;
 | ||
| }
 | ||
| 
 | ||
| /**
 | ||
|  * 自定义 useTable,继承 ahooks 的 useAntdTable,根据需求进行扩展
 | ||
|  */
 | ||
| declare function useTable<TData extends Data, TParams extends Params>(
 | ||
|   service: Service<TData, TParams>,
 | ||
|   options?: UseTableOptions<TData, TParams>
 | ||
| ): UseTableResult<TData, TParams>;
 | ||
| 
 | ||
| export default useTable;
 |