Day 94

React Router

12 min
JavaScript 100 Days

React Router se single-page applications mein multiple pages banate hain — page reload ke bina. Browser URL change hoti hai, component render hota hai.

React Router v6 Setup

Routes aur navigation.

App.jsx
jsx
// npm install react-router-dom
import { BrowserRouter, Routes, Route, Link, useNavigate, useParams } from "react-router-dom";

function App() {
  return (
    <BrowserRouter>
      <nav>
        <Link to="/">Home</Link>
        <Link to="/about">About</Link>
        <Link to="/users">Users</Link>
      </nav>
      
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/about" element={<About />} />
        <Route path="/users" element={<Users />} />
        <Route path="/users/:id" element={<UserDetail />} />
        <Route path="*" element={<NotFound />} />
      </Routes>
    </BrowserRouter>
  );
}

// Dynamic route — URL params
function UserDetail() {
  const { id } = useParams();
  const navigate = useNavigate();
  
  const [user, setUser] = useState(null);
  
  useEffect(() => {
    fetch(`/api/users/${id}`).then(r => r.json()).then(setUser);
  }, [id]);
  
  return (
    <div>
      <button onClick={() => navigate(-1)}>← Back</button>
      <h1>{user?.name}</h1>
    </div>
  );
}

// Protected route
function PrivateRoute({ children }) {
  const isAuthenticated = useAuth(); // custom hook
  return isAuthenticated ? children : <Navigate to="/login" replace />;
}

🎯 Practice Challenge

Multi-page app banao — Home, Products, Product Detail, Cart, Checkout. Protected checkout route banao.