/* eslint-disable @typescript-eslint/no-explicit-any */ import type { FetchQueryOptions } from 'react-query'; import { queryClient } from './'; /** * 构建缓存请求 * TODO: 这里的类型真的不好写, 先用any来过滤内部的, 只保证外部使用ok * * @example * const queryData = buildCachedRequest('key')((arg1, arg2) => { * return request.post(...) * }) */ export function buildCachedRequest< R extends any, F extends (...args: any) => Promise >(name: string, fn: F, options?: FetchQueryOptions): F { return ((...args: any) => { return queryClient.fetchQuery( [name, JSON.stringify(args)], () => fn(...args), options ); }) as any; }