alloy-request
Version:
alloy-request 基于`axios`和`ahooks的useRequest`封装的 react 请求库
27 lines (26 loc) • 1.62 kB
TypeScript
import { AxiosRequestConfig } from 'axios';
import { Options, Result } from 'ahooks/lib/useRequest/src/types';
import { PaginatedParams, PaginatedOptionsWithFormat, BasePaginatedOptions, PaginatedResult } from './types';
export interface ApiResponseError<T> {
code: number;
message: string;
config: AxiosRequestConfig;
data: T;
}
type TypeCombineOptions<O, P> = Omit<O, 'onError'> & {
onError?: (err: ApiResponseError<Record<string, any>>, params: P) => void;
/**
* 是否自动生成 cacheKey 缓存接口
*/
autoCache?: boolean;
};
type TypeCombineResults<R> = Omit<R, 'error'> & {
error: ApiResponseError<Record<string, any>>;
};
declare function useAxios<T, P extends any[] = any, U = any, UU extends U = any>(url: T, service?: Record<string, any> | Array<any>, options?: TypeCombineOptions<Options<UU, P>, P> & {
formatResult: (res: any) => U;
}): TypeCombineResults<Result<U, P>>;
declare function useAxios<T, P extends any[] = any>(url: T, service?: Record<string, any> | Array<any>, options?: TypeCombineOptions<Options<any, P>, P>): TypeCombineResults<Result<any, P>>;
declare function useAxios<T, Item = any, U extends Item = any>(url: T, service: Record<string, any> | Array<any>, options: TypeCombineOptions<PaginatedOptionsWithFormat<any, Item, U>, PaginatedParams>): TypeCombineResults<PaginatedResult<Item>>;
declare function useAxios<T, Item = any, U extends Item = any>(url: T, service: Record<string, any> | Array<any>, options: TypeCombineOptions<BasePaginatedOptions<U>, PaginatedParams>): TypeCombineResults<PaginatedResult<Item>>;
export { useAxios };