Improve parallel React Query handling

This commit is contained in:
Adrian Rumpold
2025-07-10 09:24:12 +02:00
parent fa8a0e4763
commit 98f2c0436b

View File

@@ -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 <div>Loading...</div>;
if (isError) return <div>Error loading data</div>;
if (metadataQuery.isPending || responseQuery.isPending)
return <div>Loading...</div>;
if (metadataQuery.isError || responseQuery.isError)
return <div>Error loading data</div>;
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