adnenre
#React#TypeScript#frontend

Server-State Management with TanStack Query & TypeScript

Fetch, cache, and manage server-state in React apps using TanStack Query with full TypeScript support.

TanStack Query + TypeScript allows type-safe server-state management, caching, and automatic refetching.

#Installing TanStack Query

npm install @tanstack/react-query

#Setting Up QueryClient

import { QueryClient, QueryClientProvider } from '@tanstack/react-query';

const queryClient = new QueryClient();

function App() {
  return (
    <QueryClientProvider client={queryClient}>
      <MyComponent />
    </QueryClientProvider>
  );
}

#Fetching Data with Types

import { useQuery } from '@tanstack/react-query';

interface Todo {
  id: number;
  title: string;
  completed: boolean;
}

function MyComponent() {
  const { data, isLoading } = useQuery<Todo[]>(['todos'], () =>
    fetch('https://jsonplaceholder.typicode.com/todos').then(res => res.json())
  );

  if (isLoading) return <div>Loading...</div>;
  return <pre>{JSON.stringify(data, null, 2)}</pre>;
}

#Mutations with TypeScript

import { useMutation, useQueryClient } from '@tanstack/react-query';

interface TodoInput { title: string; completed: boolean; }

const queryClient = useQueryClient();

const mutation = useMutation<void, unknown, TodoInput>(
  (newTodo) =>
    fetch('/todos', { method: 'POST', body: JSON.stringify(newTodo) }).then(res => res.json()),
  {
    onSuccess: () => queryClient.invalidateQueries(['todos'])
  }
);

#Conclusion

TanStack Query + TypeScript provides strongly typed, efficient server-state management.

Share this post