Files
Devour/devour_data/docs/preload-data.json
T
Tomas Dvorak 898a3c303f update
2026-02-24 10:33:59 +01:00

17 lines
2.6 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"id": "274b913dda7235c1f68b7877",
"source": "solid:signals",
"type": "github-document",
"title": "preload-data",
"content": "---\ntitle: \"Preload data\"\n---\n\nPreloading data improves perceived performance by fetching the data for an upcoming page before the user navigates to it.\n\nSolid Router initiates preloading in two scenarios:\n\n- When a user indicates intent to navigate to the page (e.g., by hovering over a link).\n- When the route's component is rendering.\n\nThis ensures data fetching starts as early as possible, often making data ready once the component renders.\n\nPreloading is configured using the [`preload`](/solid-router/reference/preload-functions/preload) prop on a [`Route`](/solid-router/reference/components/route).\nThis prop accepts a function that calls one or more queries.\nWhen triggered, the queries execute and their results are stored in a short-lived internal cache.\nOnce the user navigates and the destination routes component renders, any `createAsync` calls within the page will consume the preloaded data.\nThanks to the [deduplication mechanism](#deduplication), no redundant network requests are made.\n\n```tsx {18-20,27}\nimport { Show } from \"solid-js\";\nimport { Route, query, createAsync } from \"@solidjs/router\";\n\nconst getProductQuery = query(async (id: string) =\u003e {\n\t// ... Fetches product details for the given ID.\n}, \"product\");\n\nfunction ProductDetails(props) {\n\tconst product = createAsync(() =\u003e getProductQuery(props.params.id));\n\n\treturn (\n\t\t\u003cShow when={product()}\u003e\n\t\t\t\u003ch1\u003e{product().name}\u003c/h1\u003e\n\t\t\u003c/Show\u003e\n\t);\n}\n\nfunction preloadProduct({ params }: { params: { id: string } }) {\n\tgetProductQuery(params.id);\n}\n\nfunction Routes() {\n\treturn (\n\t\t\u003cRoute\n\t\t\tpath=\"/products/:id\"\n\t\t\tcomponent={ProductDetails}\n\t\t\tpreload={preloadProduct}\n\t\t/\u003e\n\t);\n}\n```\n\nIn this example, hovering a link to `/products/:id` triggers `preloadProduct`.\nWhen the `ProductDetails` component renders, its `createAsync` call will instantly resolve with the preloaded data.",
"url": "https://github.com/solidjs/solid-docs/blob/HEAD/src/routes/solid-router/data-fetching/how-to/preload-data.mdx",
"metadata": {
"path": "src/routes/solid-router/data-fetching/how-to/preload-data.mdx",
"repo": "solidjs/solid-docs",
"repo_url": "https://github.com/solidjs/solid-docs.git",
"size": 1861,
"source_type": "github"
},
"hash": "a596381d154fea802597ae41b649cc9bbb13a756d98f7cc6873ac0e57d1f2127",
"timestamp": "2026-02-23T11:43:00.191941372+01:00"
}