declare module '@tanstack/react-router' {
interface StaticDataRouteOption {
customData: string
}
}
declare module '@tanstack/react-router' {
interface StaticDataRouteOption {
customData?: string
}
}
export const Route = createFileRoute('/admin')({
staticData: { showNavbar: false },
component: AdminLayout,
})
// routes/__root.tsx
function RootComponent() {
const showNavbar = useMatches({
select: (matches) =>
!matches.some((m) => m.staticData?.showNavbar === false),
})
return showNavbar ? (
<Navbar>
<Outlet />
</Navbar>
) : (
<Outlet />
)
}
import { createFileRoute } from '@tanstack/react-router'
export const Route = createFileRoute('/posts')({
staticData: {
customData: 'Hello!',
},
})
You can then access this data anywhere you have access to your routes, including matches that can be mapped back to their routes.
import { createRootRoute } from '@tanstack/react-router'
export const Route = createRootRoute({
component: () => {
const matches = useMatches()
return (
<div>
{matches.map((match) => {
return <div key={match.id}>{match.staticData.customData}</div>
})}
</div>
)
},
})
export const Route = createFileRoute('/posts/$postId')({
staticData: {
getTitle: () => 'Post Details',
},
})
function Breadcrumbs() {
const matches = useMatches()
return (
<nav>
{matches
.filter((m) => m.staticData?.getTitle)
.map((m) => (
<span key={m.id}>{m.staticData.getTitle()}</span>
))}
</nav>
)
}