Handling Nested Dynamic Routes in React Router (v6)
1. Define Nested Routes in createBrowserRouter
import { createBrowserRouter, RouterProvider } from "react-router-dom";
import Layout from "./Layout";
import UserProfile from "./UserProfile";
import UserPosts from "./UserPosts";
const router = createBrowserRouter([
  {
    path: "/user/:userId",
    element: <Layout />,
    children: [
      { path: "", element: <UserProfile /> }, // Matches `/user/:userId`
      { path: "posts", element: <UserPosts /> }, // Matches `/user/:userId/posts`
    ],
  },
]);
const App = () => <RouterProvider router={router} />;
export default App;
2. Use <Outlet /> to Render Nested Routes in Layout
import { Outlet } from "react-router-dom";
const Layout = () => {
  return (
    <div>
      <h2>User Page</h2>
      <Outlet /> {/* Renders matched child routes */}
    </div>
  );
};
export default Layout;
3. Access Dynamic Params with useParams()
import { useParams } from "react-router-dom";
const UserProfile = () => {
  const { userId } = useParams();
  return <h3>Profile of User {userId}</h3>;
};
export default UserProfile;