fumadocs-openapi
Version:
Generate MDX docs for your OpenAPI spec
30 lines (29 loc) • 829 B
JavaScript
import { useMemo, useRef, useState } from 'react';
export function useQuery(fn) {
const [loading, setLoading] = useState(false);
const [data, setData] = useState();
const [error, setError] = useState();
const fnRef = useRef(fn);
fnRef.current = fn;
return useMemo(() => ({
isLoading: loading,
data,
error,
start(...input) {
setLoading(true);
void fnRef
.current(...input)
.then((res) => {
setData(res);
setError(undefined);
})
.catch((err) => {
setData(undefined);
setError(err);
})
.finally(() => {
setLoading(false);
});
},
}), [error, data, loading]);
}