Back to Storybook

Tanstack React Query Setup

docs/_snippets/tanstack-react-query-setup.md

10.4.01.9 KB
Original Source
tsx
import { type QueryClient, QueryClientProvider } from '@tanstack/react-query';

// ๐Ÿ‘‡ Create a new QueryClient
const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      retry: false,
      staleTime: Infinity,
    },
  },
});

export default {
  beforeEach: () => {
    // ๐Ÿ‘‡ Clear the cache between stories so each story starts fresh
    queryClient.clear();
  },
  parameters: {
    tanstack: {
      router: {
        // ๐Ÿ‘‡ Make queryClient available to route loaders via ctx.context.queryClient
        context: { queryClient },
      },
    },
  },
  decorators: [
    (Story) => (
      // ๐Ÿ‘‡ Provide the QueryClient to all stories
      <QueryClientProvider client={queryClient}>
        <Story />
      </QueryClientProvider>
    ),
  ],
};
tsx
import { definePreview } from '@storybook/tanstack-react';
import { type QueryClient, QueryClientProvider } from '@tanstack/react-query';

// ๐Ÿ‘‡ Create a new QueryClient
const queryClient = new QueryClient({
  defaultOptions: {
    queries: {
      retry: false,
      staleTime: Infinity,
    },
  },
});

export default definePreview({
  beforeEach: () => {
    // ๐Ÿ‘‡ Clear the cache between stories so each story starts fresh
    queryClient.clear();
  },
  parameters: {
    tanstack: {
      router: {
        // ๐Ÿ‘‡ Make queryClient available to route loaders via ctx.context.queryClient
        context: { queryClient },
      },
    },
  },
  decorators: [
    (Story) => (
      // ๐Ÿ‘‡ Provide the QueryClient to all stories
      <QueryClientProvider client={queryClient}>
        <Story />
      </QueryClientProvider>
    ),
  ],
});
<!-- JS snippets still needed while providing both CSF 3 & Next -->