¡Absolutamente! React Router DOM es una biblioteca fundamental para manejar el enrutamiento en aplicaciones React de una sola página (SPA). Aquí tienes un “cheatsheet” completo y bien estructurado, optimizado para ser claro y conciso para una IA conversacional.


🛣️ React Router DOM Cheatsheet Completo 🛣️

React Router DOM es la biblioteca estándar de facto para el enrutamiento declarativo en aplicaciones React. Permite a los usuarios navegar entre diferentes “vistas” de la aplicación sin recargar la página completa, manteniendo la URL sincronizada con la interfaz de usuario.


1. 🌟 Conceptos Clave


2. 🛠️ Configuración Inicial

  1. Instalación:

    npm install react-router-dom
    # o
    yarn add react-router-dom
  2. Configuración del Router Principal:

    • Envuelve tu aplicación o la parte de tu aplicación que necesita enrutamiento con BrowserRouter.
    • Esto suele hacerse en src/main.jsx (React 18) o src/index.js (React 17 y anteriores).
    // src/main.jsx (o src/index.js)
    import React from 'react';
    import ReactDOM from 'react-dom/client';
    import App from './App.jsx';
    import './index.css';
    
    import { BrowserRouter } from 'react-router-dom'; // Importa BrowserRouter
    
    ReactDOM.createRoot(document.getElementById('root')).render(
      <React.StrictMode>
        <BrowserRouter> {/* Envuelve tu App con BrowserRouter */}
          <App />
        </BrowserRouter>
      </React.StrictMode>,
    );

3. 🧩 Componentes Principales para Definir Rutas

3.1. Routes

3.2. Route


4. 🔗 Navegación


5. 🎣 Hooks Comunes (React Router v6+)

5.1. useParams()

5.2. useNavigate()

5.3. useLocation()

5.4. useSearchParams()

5.5. Outlet (para Rutas Anidadas)

5.6. useMatch()


6. 🛣️ Patrones de Enrutamiento Comunes


7. ⏱️ Carga perezosa (Lazy Loading) y Suspense

Para dividir el código de tu aplicación y cargar componentes solo cuando son necesarios.

import React, { Suspense, lazy } from 'react';
import { Routes, Route } from 'react-router-dom';

const LazyDashboard = lazy(() =&gt; import('./pages/Dashboard'));
const LazyAdminPanel = lazy(() =&gt; import('./pages/AdminPanel'));

function App() {
  return (
    <Suspense fallback={<div>Cargando...</div>}> {/* Muestra un fallback mientras el componente se carga */}
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/dashboard" element={<LazyDashboard />} />
        <Route path="/admin" element={<LazyAdminPanel />} />
        {/* ... */}
      </Routes>
    </Suspense>
  );
}

8. 🔒 Rutas Protegidas (Ejemplo Básico)

Puedes crear un componente envoltorio para proteger rutas que requieren autenticación.

import React from 'react';
import { Navigate, Outlet } from 'react-router-dom';

const ProtectedRoute = ({ isAuthenticated, children }) =&gt; {
  if (!isAuthenticated) {
    return <Navigate to="/login" replace />; // Redirige a login si no está autenticado
  }
  return children ? children : <Outlet />; // Renderiza hijos o Outlet para rutas anidadas
};

// Uso en App.jsx
// Suponiendo que 'isAuthenticated' viene de tu contexto de autenticación
<Route path="/dashboard" element={<ProtectedRoute isAuthenticated={true} />}>
  <Route index element={<h2>Bienvenido, usuario autenticado!</h2>} />
  {/* ... otras rutas anidadas del dashboard */}
</Route>
<Route path="/login" element={<LoginPage />} />

9. 💡 Buenas Prácticas y Consejos


Este cheatsheet te proporciona una base sólida para trabajar con React Router DOM, cubriendo los componentes y hooks esenciales para construir una aplicación de enrutamiento robusta en React.