Careeroza
Navigation, 404 and Protected Routes
useNavigate
import { useNavigate } from 'react-router-dom';
function LoginForm() {
const navigate = useNavigate();
const onLogin = async () => {
await login();
navigate('/dashboard', { replace: true }); // go to dashboard after login
};
return <button onClick={onLogin}>Log in</button>;
}404 Page
<Route path="*" element={<NotFound />} />Note: * matches any URL that no other route matched, so put it last.
Protected Route
Show a page only to logged-in users; otherwise redirect to /login with <Navigate>.
import { Navigate, Outlet } from 'react-router-dom';
function ProtectedRoute() {
const { user } = useAuth();
return user ? <Outlet /> : <Navigate to="/login" replace />;
}
<Route element={<ProtectedRoute />}>
<Route path="/dashboard" element={<Dashboard />} />
<Route path="/profile" element={<Profile />} />
</Route>