docs/_snippets/tanstack-react-query-setup.md
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>
),
],
};
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>
),
],
});