Skip to content

Commit e97a862

Browse files
committed
infinite fetch fix
1 parent 2c8dbaf commit e97a862

1 file changed

Lines changed: 12 additions & 6 deletions

File tree

‎src/hooks/useFetch.ts‎

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"use client";
22

3-
import { useEffect, useState, useCallback } from "react";
3+
import { useEffect, useState, useCallback, useRef } from "react";
44
import { apiRequest, HTTPRequestType } from "./useApiClient";
55

66

@@ -25,6 +25,12 @@ export function useFetch<T = unknown>(
2525
const [data, setData] = useState<T | null>(null);
2626
const [isLoading, setIsLoading] = useState(conditionalFetch);
2727
const [error, setError] = useState<string | null>(null);
28+
29+
const onSuccessRef = useRef(onSuccess);
30+
const onErrorRef = useRef(onError);
31+
32+
onSuccessRef.current = onSuccess;
33+
onErrorRef.current = onError;
2834

2935
const fetchData = useCallback(async (overrideOptions?: Partial<RequestInit>) => {
3036
try {
@@ -36,21 +42,21 @@ export function useFetch<T = unknown>(
3642

3743
setData(result);
3844

39-
if (onSuccess) {
40-
onSuccess(result);
45+
if (onSuccessRef.current) {
46+
onSuccessRef.current(result);
4147
}
4248
} catch (err) {
4349
const errorMessage = (err as Error).message;
4450
console.error(`Failed to fetch ${endpoint}:`, err);
4551
setError(errorMessage);
4652

47-
if (onError) {
48-
onError(errorMessage);
53+
if (onErrorRef.current) {
54+
onErrorRef.current(errorMessage);
4955
}
5056
} finally {
5157
setIsLoading(false);
5258
}
53-
}, [endpoint, fetchOptions, onSuccess, onError]);
59+
}, [endpoint, fetchOptions]);
5460

5561
useEffect(() => {
5662
if (conditionalFetch) {

0 commit comments

Comments
 (0)