fix: Tweaks to hover card behavior

This commit is contained in:
Tom Moor
2023-07-22 12:47:01 -04:00
parent 5d71398ea6
commit 5e705f3dc7
4 changed files with 46 additions and 22 deletions

View File

@@ -1,4 +1,5 @@
import * as React from "react";
import useIsMounted from "./useIsMounted";
type RequestResponse<T> = {
/** The return value of the request function. */
@@ -20,6 +21,7 @@ type RequestResponse<T> = {
export default function useRequest<T = unknown>(
requestFn: () => Promise<T>
): RequestResponse<T> {
const isMounted = useIsMounted();
const [data, setData] = React.useState<T>();
const [loading, setLoading] = React.useState<boolean>(false);
const [error, setError] = React.useState();
@@ -28,16 +30,23 @@ export default function useRequest<T = unknown>(
setLoading(true);
try {
const response = await requestFn();
setData(response);
if (isMounted()) {
setData(response);
}
return response;
} catch (err) {
setError(err);
if (isMounted()) {
setError(err);
}
} finally {
setLoading(false);
if (isMounted()) {
setLoading(false);
}
}
return undefined;
}, [requestFn]);
}, [requestFn, isMounted]);
return { data, loading, error, request };
}