Route parameters allow React Router to create dynamic URLs such as /user/:id. These values can be read inside components using useParams().
:paramNameuseParams()A route parameter is defined by prefixing a segment with a colon.
// Route with a dynamic parameter named id
<Route path="/user/:id" element={<User />} />
// App.js defines a route with a dynamic id
import React from "react";
import { Routes, Route, Link } from "react-router-dom";
import User from "./User";
function App() {
return (
<div>
<Link to="/user/1">User 1</Link>
<Link to="/user/2">User 2</Link>
<Routes>
<Route path="/user/:id" element={<User />} />
</Routes>
</div>
);
}
export default App;
// User.js reads the id parameter from the URL
import React from "react";
import { useParams } from "react-router-dom";
function User() {
const { id } = useParams();
return <p>User ID: {id}</p>;
}
export default User;
// Route with multiple dynamic parameters
<Route path="/product/:category/:id" element={<Product />} />
// Optional parameter using question mark
<Route path="/blog/:postId?" element={<Blog />} />
// Navigate to a dynamic route programmatically
import { useNavigate } from "react-router-dom";
const navigate = useNavigate();
navigate(`/user/${id}`);
Click the buttons below to simulate navigation and see how the Component extracts data from the URL.
Visiting /user/2 dynamically renders content for user ID 2. The same component adapts automatically for different values.