Sid Gifari File Manager
🏠 Root
/
home2
/
nuveprin
/
ahavahome.org
/
wp-content
/
plugins
/
give
/
src
/
Views
/
Components
/
ListTable
/
hooks
/
Editing: lagData.ts
import {useRef, useEffect, useCallback} from 'react'; // SWR middleware for keeping the data even if key changes. export default function lagData(useSWRNext) { return (key, fetcher, config) => { // Use a ref to store previous returned data. const laggyDataRef = useRef(); // Actual SWR hook. const swr = useSWRNext(key, fetcher, config); useEffect(() => { // Update ref if data is not undefined. if (swr.data !== undefined) { laggyDataRef.current = swr.data; } }, [swr.data]); // Expose a method to clear the laggy data, if any. const resetLaggy = useCallback(() => { laggyDataRef.current = undefined; }, []); // Fallback to previous data if the current data is undefined. const dataOrLaggyData = swr.data === undefined ? laggyDataRef.current : swr.data; // Is it showing previous data? const isLagging = swr.data === undefined && laggyDataRef.current !== undefined; // Also add a `isLagging` field to SWR. return Object.assign({}, swr, { data: dataOrLaggyData, isLagging, resetLaggy, }); }; }
Save
Cancel