import { createFileRoute } from '@tanstack/react-router'
import * as React from 'react'
import { ErrorComponent } from '@tanstack/react-router'
import { fetchPost } from '../posts'
import type { ErrorComponentProps } from '@tanstack/react-router'
export const Route = createFileRoute('/posts/$postId')({
loader: async ({ params: { postId } }) => fetchPost(postId),
errorComponent: PostErrorComponent,
notFoundComponent: () => {
return <p>Post not found</p>
},
component: PostComponent,
})
export function PostErrorComponent({ error }: ErrorComponentProps) {
return <ErrorComponent error={error} />
}
function PostComponent() {
const post = Route.useLoaderData()
return (
<div className="space-y-2">
<h4 className="text-xl font-bold underline">{post.title}</h4>
<div className="text-sm">{post.body}</div>
</div>
)
}
import { createFileRoute } from '@tanstack/react-router'
import * as React from 'react'
import { ErrorComponent } from '@tanstack/react-router'
import { fetchPost } from '../posts'
import type { ErrorComponentProps } from '@tanstack/react-router'
export const Route = createFileRoute('/posts/$postId')({
loader: async ({ params: { postId } }) => fetchPost(postId),
errorComponent: PostErrorComponent,
notFoundComponent: () => {
return <p>Post not found</p>
},
component: PostComponent,
})
export function PostErrorComponent({ error }: ErrorComponentProps) {
return <ErrorComponent error={error} />
}
function PostComponent() {
const post = Route.useLoaderData()
return (
<div className="space-y-2">
<h4 className="text-xl font-bold underline">{post.title}</h4>
<div className="text-sm">{post.body}</div>
</div>
)
}
Your weekly dose of JavaScript news. Delivered every Monday to over 100,000 devs, for free.