React Router Dom ...
Guía para manejar rutas anidadas en React Router DOM y aprovechar Outlet para layouts compartidos.
1
03-10-2024
Rutas Anidadas y Uso de Outlet.
Las rutas anidadas permiten definir una estructura de rutas dentro de otras rutas. Esto es especialmente útil cuando tienes una página con subpáginas o una interfaz que comparte un diseño o layout común entre varias secciones. Por ejemplo, una página de administración puede tener varias subsecciones como "Dashboard", "Usuarios", y "Ajustes", que comparten una barra de navegación o un menú lateral común.
// App.tsx
import React from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import Layout from './components/Layout';
import Dashboard from './pages/Dashboard';
import Settings from './pages/Settings';
const App: React.FC = () => {
return (
<Router>
<Routes>
<Route path="/" element={<Layout />}>
<Route path="dashboard" element={<Dashboard />} />
<Route path="settings" element={<Settings />} />
</Route>
</Routes>
</Router>
);
};
export default App;
// Layout.tsx
import React from 'react';
import { Outlet, Link } from 'react-router-dom';
const Layout: React.FC = () => {
return (
<div>
<nav>
<Link to="/dashboard">Dashboard</Link>
<Link to="/settings">Settings</Link>
</nav>
<Outlet />
</div>
);
};
export default Layout;
Outlet
?El componente Outlet
actúa como un marcador de posición en tu componente padre donde se renderizarán las rutas hijas. Este es el elemento que hace posible que las rutas anidadas funcionen.
Outlet
?El componente Outlet
en Layout
actúa como un contenedor donde se insertarán los componentes de las rutas hijas (Dashboard
o Settings
) según la ruta actual. Cuando la ruta es /dashboard
, el componente Dashboard
se renderiza en el lugar donde está el Outlet
. Lo mismo ocurre para /settings
con el componente Settings
.
Organización del Código: Las rutas anidadas ayudan a organizar el código y la estructura del proyecto al agrupar las páginas relacionadas.
Layouts Reutilizables: Permite reutilizar layouts y diseños compartidos entre diferentes rutas, lo que hace que el código sea más DRY (Don’t Repeat Yourself).
Navegación Mejorada: Facilita la creación de estructuras de navegación complejas en aplicaciones grandes.
Control Centralizado: Puedes manejar estados globales, cargar datos comunes, y manejar la autenticación de manera centralizada en el componente de layout.