Skip to content

Commit ba218f6

Browse files
authored
Merge pull request #11182 from marmelab/doc-tanstack-start-splat-route
[Doc] Use splat route for TanStack Start setup
2 parents 65fb7e8 + 76e18e4 commit ba218f6

File tree

1 file changed

+7
-23
lines changed

1 file changed

+7
-23
lines changed

docs/TanStackStart.md

Lines changed: 7 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,12 @@ yarn add react-admin ra-router-tanstack ra-data-json-server
5454

5555
## Adding React-Admin In A Sub Route
5656

57-
TanStack Start uses file-based routing. React-admin generates dynamic routes for each resource (e.g. `/admin/users`, `/admin/users/:id`). To avoid “Not Found” pages, we create explicit routes for the resource paths and render the same admin component in each route.
57+
TanStack Start uses file-based routing. React-admin generates dynamic routes for each resource (e.g. `/admin/users`, `/admin/users/:id`). To avoid creating one TanStack route per react-admin page, use a single splat route.
5858

59-
First, create the admin route at `src/routes/admin.tsx`:
59+
First, create the admin route at `src/routes/admin.$.tsx`:
6060

6161
```tsx
62-
// in src/routes/admin.tsx
62+
// in src/routes/admin.$.tsx
6363
import { createFileRoute } from '@tanstack/react-router';
6464
import {
6565
Admin,
@@ -71,7 +71,7 @@ import jsonServerProvider from 'ra-data-json-server';
7171
import { tanStackRouterProvider } from 'ra-router-tanstack';
7272

7373
const dataProvider = jsonServerProvider('https://jsonplaceholder.typicode.com');
74-
export const Route = createFileRoute('/admin')({ component: App });
74+
export const Route = createFileRoute('/admin/$')({ component: App });
7575

7676
function App() {
7777
return (
@@ -92,7 +92,7 @@ function App() {
9292
export default App;
9393
```
9494

95-
Then create the routes for the resource and its dynamic paths:
95+
Then keep the root route as a simple link to the admin:
9696

9797
```tsx
9898
// in src/routes/index.tsx
@@ -112,22 +112,6 @@ function Home() {
112112
export const Route = createFileRoute('/')({ component: Home });
113113
```
114114

115-
```tsx
116-
// in src/routes/admin.users.tsx
117-
import { createFileRoute } from '@tanstack/react-router';
118-
import App from './admin';
119-
120-
export const Route = createFileRoute('/admin/users')({ component: App });
121-
```
122-
123-
```tsx
124-
// in src/routes/admin.users.$id.tsx
125-
import { createFileRoute } from '@tanstack/react-router';
126-
import App from './admin';
127-
128-
export const Route = createFileRoute('/admin/users/$id')({ component: App });
129-
```
130-
131115

132116
You can now start the app in `development` mode:
133117

@@ -141,7 +125,7 @@ The admin should render at `/admin` on your dev server.
141125

142126
![TanStack Start admin screen](./img/tanstack-admin.png)
143127

144-
**Tip**: If you add more resources, create matching file-based routes for each resource list and edit path under `/admin` and point them to the same `App` component.
128+
**Tip**: With the `/admin/$` route, you don't need to create one TanStack Start route file per react-admin page.
145129

146130
## Removing The TanStack Header
147131

@@ -229,7 +213,7 @@ yarn add @raphiniert/ra-data-postgrest
229213
Finally, update your Admin dataProvider:
230214

231215
```tsx
232-
// in src/routes/admin.tsx
216+
// in src/routes/admin.$.tsx
233217
import { Admin, Resource, ListGuesser, fetchUtils } from 'react-admin';
234218
import postgrestRestProvider from '@raphiniert/ra-data-postgrest';
235219
import { tanStackRouterProvider } from 'ra-router-tanstack';

0 commit comments

Comments
 (0)