Skip to content

Commit 3459ec0

Browse files
committed
add params routes
1 parent a8e2a6a commit 3459ec0

File tree

1 file changed

+203
-0
lines changed

1 file changed

+203
-0
lines changed

e2e/solid-router/basic/src/main.tsx

Lines changed: 203 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
createRootRoute,
99
createRoute,
1010
createRouter,
11+
redirect,
1112
} from '@tanstack/solid-router'
1213
import { TanStackRouterDevtools } from '@tanstack/solid-router-devtools'
1314
import { NotFoundError, fetchPost, fetchPosts } from './posts'
@@ -207,11 +208,213 @@ function LayoutBComponent() {
207208
return <div>I'm layout B!</div>
208209
}
209210

211+
const paramsPsRoute = createRoute({
212+
getParentRoute: () => rootRoute,
213+
path: '/params-ps',
214+
})
215+
216+
const paramsPsIndexRoute = createRoute({
217+
getParentRoute: () => paramsPsRoute,
218+
path: '/',
219+
component: function ParamsIndex() {
220+
return (
221+
<div>
222+
<h3 class="pb-2">Named path params</h3>
223+
<ul class="grid mb-2">
224+
<li>
225+
<Link
226+
data-testid="l-to-named-foo"
227+
to="/params-ps/named/$foo"
228+
params={{ foo: 'foo' }}
229+
>
230+
/params-ps/named/$foo
231+
</Link>
232+
</li>
233+
<li>
234+
<Link
235+
data-testid="l-to-named-prefixfoo"
236+
to="/params-ps/named/prefix{$foo}"
237+
params={{ foo: 'foo' }}
238+
>
239+
/params-ps/named/{'prefix{$foo}'}
240+
</Link>
241+
</li>
242+
<li>
243+
<Link
244+
data-testid="l-to-named-foosuffix"
245+
to="/params-ps/named/{$foo}suffix"
246+
params={{ foo: 'foo' }}
247+
>
248+
/params-ps/named/{'{$foo}suffix'}
249+
</Link>
250+
</li>
251+
</ul>
252+
<hr />
253+
<h3 class="pb-2">Wildcard path params</h3>
254+
<ul class="grid mb-2">
255+
<li>
256+
<Link
257+
data-testid="l-to-wildcard-foo"
258+
to="/params-ps/wildcard/$"
259+
params={{ _splat: 'foo' }}
260+
>
261+
/params-ps/wildcard/$
262+
</Link>
263+
</li>
264+
<li>
265+
<Link
266+
data-testid="l-to-wildcard-prefixfoo"
267+
to="/params-ps/wildcard/prefix{$}"
268+
params={{ _splat: 'foo' }}
269+
>
270+
/params-ps/wildcard/{'prefix{$}'}
271+
</Link>
272+
</li>
273+
<li>
274+
<Link
275+
data-testid="l-to-wildcard-foosuffix"
276+
to="/params-ps/wildcard/{$}suffix"
277+
params={{ _splat: 'foo' }}
278+
>
279+
/params-ps/wildcard/{'{$}suffix'}
280+
</Link>
281+
</li>
282+
</ul>
283+
</div>
284+
)
285+
},
286+
})
287+
288+
const paramsPsNamedRoute = createRoute({
289+
getParentRoute: () => paramsPsRoute,
290+
path: '/named',
291+
})
292+
293+
const paramsPsNamedIndexRoute = createRoute({
294+
getParentRoute: () => paramsPsNamedRoute,
295+
path: '/',
296+
beforeLoad: () => {
297+
throw redirect({ to: '/params-ps' })
298+
},
299+
})
300+
301+
const paramsPsNamedFooRoute = createRoute({
302+
getParentRoute: () => paramsPsNamedRoute,
303+
path: '/$foo',
304+
component: function ParamsNamedFoo() {
305+
const p = paramsPsNamedFooRoute.useParams()
306+
return (
307+
<div>
308+
<h3>ParamsNamedFoo</h3>
309+
<div data-testid="params-output">{JSON.stringify(p())}</div>
310+
</div>
311+
)
312+
},
313+
})
314+
315+
const paramsPsNamedFooPrefixRoute = createRoute({
316+
getParentRoute: () => paramsPsNamedRoute,
317+
path: '/prefix{$foo}',
318+
component: function ParamsNamedFooMarkdown() {
319+
const p = paramsPsNamedFooPrefixRoute.useParams()
320+
return (
321+
<div>
322+
<h3>ParamsNamedFooPrefix</h3>
323+
<div data-testid="params-output">{JSON.stringify(p())}</div>
324+
</div>
325+
)
326+
},
327+
})
328+
329+
const paramsPsNamedFooSuffixRoute = createRoute({
330+
getParentRoute: () => paramsPsNamedRoute,
331+
path: '/{$foo}suffix',
332+
component: function ParamsNamedFooSuffix() {
333+
const p = paramsPsNamedFooSuffixRoute.useParams()
334+
return (
335+
<div>
336+
<h3>ParamsNamedFooSuffix</h3>
337+
<div data-testid="params-output">{JSON.stringify(p())}</div>
338+
</div>
339+
)
340+
},
341+
})
342+
343+
const paramsPsWildcardRoute = createRoute({
344+
getParentRoute: () => paramsPsRoute,
345+
path: '/wildcard',
346+
})
347+
348+
const paramsPsWildcardIndexRoute = createRoute({
349+
getParentRoute: () => paramsPsWildcardRoute,
350+
path: '/',
351+
beforeLoad: () => {
352+
throw redirect({ to: '/params-ps' })
353+
},
354+
})
355+
356+
const paramsPsWildcardSplatRoute = createRoute({
357+
getParentRoute: () => paramsPsWildcardRoute,
358+
path: '$',
359+
component: function ParamsWildcardSplat() {
360+
const p = paramsPsWildcardSplatRoute.useParams()
361+
return (
362+
<div>
363+
<h3>ParamsWildcardSplat</h3>
364+
<div data-testid="params-output">{JSON.stringify(p())}</div>
365+
</div>
366+
)
367+
},
368+
})
369+
370+
const paramsPsWildcardSplatPrefixRoute = createRoute({
371+
getParentRoute: () => paramsPsWildcardRoute,
372+
path: 'prefix{$}',
373+
component: function ParamsWildcardSplatPrefix() {
374+
const p = paramsPsWildcardSplatPrefixRoute.useParams()
375+
return (
376+
<div>
377+
<h3>ParamsWildcardSplatPrefix</h3>
378+
<div data-testid="params-output">{JSON.stringify(p())}</div>
379+
</div>
380+
)
381+
},
382+
})
383+
384+
const paramsPsWildcardSplatSuffixRoute = createRoute({
385+
getParentRoute: () => paramsPsWildcardRoute,
386+
path: '{$}suffix',
387+
component: function ParamsWildcardSplatSuffix() {
388+
const p = paramsPsWildcardSplatSuffixRoute.useParams()
389+
return (
390+
<div>
391+
<h3>ParamsWildcardSplatSuffix</h3>
392+
<div data-testid="params-output">{JSON.stringify(p())}</div>
393+
</div>
394+
)
395+
},
396+
})
397+
210398
const routeTree = rootRoute.addChildren([
211399
postsRoute.addChildren([postRoute, postsIndexRoute]),
212400
layoutRoute.addChildren([
213401
layout2Route.addChildren([layoutARoute, layoutBRoute]),
214402
]),
403+
paramsPsRoute.addChildren([
404+
paramsPsNamedRoute.addChildren([
405+
paramsPsNamedFooPrefixRoute,
406+
paramsPsNamedFooSuffixRoute,
407+
paramsPsNamedFooRoute,
408+
paramsPsNamedIndexRoute,
409+
]),
410+
paramsPsWildcardRoute.addChildren([
411+
paramsPsWildcardSplatRoute,
412+
paramsPsWildcardSplatPrefixRoute,
413+
paramsPsWildcardSplatSuffixRoute,
414+
paramsPsWildcardIndexRoute,
415+
]),
416+
paramsPsIndexRoute,
417+
]),
215418
indexRoute,
216419
])
217420

0 commit comments

Comments
 (0)