import React from 'react'; import invariant from 'tiny-invariant'; import { AnyEndpoint, Method } from './endpoint'; import { LazyRequestConfigFromEndpoint, useLazyRequest } from './lazy-request-hook'; export type RequestConfigFromEndpoint = Readonly< LazyRequestConfigFromEndpoint & { skip?: boolean, } > export function useRequest( endpoint: E, config?: RequestConfigFromEndpoint, ) { invariant( endpoint.method !== Method.DELETE, `You cannot use useRequest with ${endpoint.method} method` ); const [handler, state] = useLazyRequest(endpoint, config); const skip = React.useMemo(() => config?.skip ?? false, [config]); React.useEffect( () => { if (!skip) { handler(); } }, [skip, handler] ); return state; }