diff --git a/package.json b/package.json index 88ea2cc..2b12b4e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "http-react", - "version": "3.8.3", + "version": "3.8.4", "description": "React hooks for data fetching", "main": "dist/index.js", "scripts": { diff --git a/src/hooks/use-fetch.ts b/src/hooks/use-fetch.ts index 9bb971e..3a38d03 100644 --- a/src/hooks/use-fetch.ts +++ b/src/hooks/use-fetch.ts @@ -1,12 +1,5 @@ 'use client' -import { - useState, - useEffect, - useMemo, - useRef, - useCallback, - startTransition -} from 'react' +import { useState, useEffect, useMemo, useRef, useCallback } from 'react' import { abortControllers, @@ -55,7 +48,6 @@ import { createImperativeFetch, getMiliseconds, getTimePassed, - mutateData, revalidate, useIsomorphicLayoutEffect } from '../utils' @@ -433,6 +425,10 @@ export function useFetch( const { data, loading, online, error, completedAttempts } = fetchState + const thisCache = paginationCache ?? normalCache ?? data ?? def ?? null + + const rawJSON = serialize(data) + const isLoading = isExpired ? isPending(resolvedKey) || loading : false const loadingFirst = @@ -1451,7 +1447,13 @@ export function useFetch( return () => clearTimeout(handler) } - revalidationLogic() + const startRevalidate = setTimeout(() => { + revalidationLogic() + }, 0) + + return () => { + clearTimeout(startRevalidate) + } }, [ resolvedKey, serialize(optionsConfig), @@ -1561,7 +1563,7 @@ Learn more: https://httpr.vercel.app/docs/api#suspense hasErrors.get(resolvedDataKey) || hasErrors.get(resolvedKey) || error const dataCandidate = - (error && isFailed ? (cacheIfError ? data : null) : data) ?? def + (error && isFailed ? (cacheIfError ? thisCache : null) : thisCache) ?? def const responseData = isDefined(dataCandidate) ? transform!(dataCandidate)