Blog>
Snippets

Type-Safe React Query Optimizations

Showcase how to set up query prefetching and cache management in a type-safe manner, leveraging TypeScript for better performance optimizations.
import { useQuery, useQueryClient } from 'react-query';
import { fetchCarDetails } from './api';

interface CarDetails {
  id: number;
  make: string;
  model: string;
  year: number;
}

export const usePrefetchCarDetails = () => {
  const queryClient = useQueryClient();
  return async (carId: number) => {
    await queryClient.prefetchQuery<CarDetails, Error>(['carDetails', carId], () => fetchCarDetails(carId));
  };
};
Defines a TypeScript interface for car details and a custom hook to prefetch car details using React Query. The prefetching is type-safe, ensuring that both the fetched data and the error conform to specific types.
import { QueryClient } from 'react-query';

const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      cacheTime: 5 * 60 * 1000, // cache the data for 5 minutes
      staleTime: 60 * 1000, // mark data as stale after 1 minute
      refetchOnWindowFocus: false, // disable refetching on window focus
    },
  },
});

export default queryClient;
Creates a QueryClient instance with customized caching strategies. It sets data to be cached for 5 minutes and marked as stale after 1 minute. Additionally, it disables refetching data on window focus for performance optimization.