()({
head: () => ({
links: [{ rel: "stylesheet", href: styleCss }],
}),
@@ -29,6 +34,7 @@ export const Route = createRootRouteWithContext()({
});
function RootComponent() {
+ const context = Route.useRouteContext();
return (
@@ -36,14 +42,16 @@ function RootComponent() {
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
+
diff --git a/src/routes/todo.tsx b/src/routes/todo.tsx
index 4a43719..93feb16 100644
--- a/src/routes/todo.tsx
+++ b/src/routes/todo.tsx
@@ -1,25 +1,29 @@
-import { queryOptions, useQuery } from "@tanstack/solid-query";
+import { queryOptions, createQuery } from "@tanstack/solid-query";
import { createFileRoute } from "@tanstack/solid-router";
import { For, Match, Switch } from "solid-js";
+const todoQueryOptions = queryOptions({
+ queryKey: ["todo"],
+ queryFn: () => {
+ console.log("Fetching todos...");
+ return fetch("https://jsonplaceholder.typicode.com/todos").then((res) =>
+ res.json(),
+ );
+ },
+});
+
export const Route = createFileRoute("/todo")({
component: RouteComponent,
+ loader: ({ context }) =>
+ context.queryClient.ensureQueryData(todoQueryOptions),
});
function RouteComponent() {
- const query = useQuery(() =>
- queryOptions({
- queryKey: ["todo"],
- queryFn: () =>
- fetch("https://jsonplaceholder.typicode.com/todos").then((res) =>
- res.json(),
- ),
- }),
- );
+ const query = createQuery(() => todoQueryOptions);
return (
- Loading...>}>
+ Loading...
}>
Error: {query.error?.message}