From 98f2c0436bb86e60aa59a655b58f708644c98e1b Mon Sep 17 00:00:00 2001 From: Adrian Rumpold Date: Thu, 10 Jul 2025 09:24:12 +0200 Subject: [PATCH] Improve parallel React Query handling --- src/App.tsx | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 1001fb4..a5cb7ce 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -9,28 +9,33 @@ import { getSampleData } from "./lib/data"; import { fetchCategoryMetadata } from "./lib/metadata"; function App() { - const { data: categoryMetadata } = useQuery({ + const metadataQuery = useQuery({ queryKey: ["categoryMetadata"], queryFn: fetchCategoryMetadata, }); - const { data, isPending, isError } = useQuery({ + const responseQuery = useQuery({ queryKey: ["responses"], queryFn: getSampleData, refetchInterval: 2 * 1000, // Refresh every 5 seconds }); - if (isPending) return
Loading...
; - if (isError) return
Error loading data
; + if (metadataQuery.isPending || responseQuery.isPending) + return
Loading...
; + if (metadataQuery.isError || responseQuery.isError) + return
Error loading data
; - if (!data.length) return null; + const responses = responseQuery.data; + const categoryMetadata = metadataQuery.data; + + if (!responses.length) return null; // Group data by question (outside the component) const questionGroups = Array.from( - d3.group(data, (d) => d.question).entries() + d3.group(responses, (d) => d.question).entries() ); // Get unique response categories (sorted for consistent ordering) - const allResponses = [...new Set(data.map((d) => d.response))]; + const allResponses = [...new Set(responses.map((d) => d.response))]; const sortedResponses = allResponses.sort((a, b) => a - b); // Create scales