fix(striker-ui): add fetch hook

main
Tsu-ba-me 1 year ago
parent a7d97c88fd
commit da491ab814
  1. 29
      striker-ui/hooks/useFetch.tsx

@ -0,0 +1,29 @@
import useSWR, { BareFetcher, SWRConfiguration } from 'swr';
import API_BASE_URL from '../lib/consts/API_BASE_URL';
import fetchJSON from '../lib/fetchers/fetchJSON';
type FetchHookResponse<D, E extends Error = Error> = {
data?: D;
error?: E;
loading: boolean;
};
const useFetch = <Data,>(
url: string,
options: SWRConfiguration<Data> & {
fetcher?: BareFetcher<Data>;
baseUrl?: string;
} = {},
): FetchHookResponse<Data> => {
const { fetcher = fetchJSON, baseUrl = API_BASE_URL, ...config } = options;
const { data, error } = useSWR<Data>(`${baseUrl}${url}`, fetcher, config);
const loading = !error && !data;
return { data, error, loading };
};
export default useFetch;
Loading…
Cancel
Save