Create React Router error page

| Tag react  router 

An element prop can be used on a route to define a regular page, while the errorElement prop can be used to override the standard error page:

const router = createBrowserRouter([
    {
        path: '/',
        element: <App />,
        errorElement: <ErrorPage />,
        children: [
            {path: 'products', element: <ProductsPage />},
            {path: 'products/:id', element: <ProductPage />}
        ]
    },
]);

Access error info in error page

Similar to useParams() hook, React Router providers us with useRouteError hook, which can be used to get error info:

The hook returns a value of type unknown, we can extract the statusText prop from it:

import { useRouteError } from "react-router-dom";
import { Header } from "../Header";

function isError(error: any): error is { statusText: string } {
    return 'statusText' in error;
}

export function ErrorPage() {
    const error = useRouteError();
    console.log('error=', error);
    return (
        <>
            <Header />
            <div className="text-center p-5 text-xl">
                <h1 className="text-xl text-slate-900">
                    Sorry, an error has occurred
                </h1>
                {isError(error) && (
                    <p className="text-base text-slate-700">
                        {error.statusText}
                    </p>
                )}
            </div>
        </>
    );
}

Prev     Next