Todos los componentes (204)
Enrutado
Más · RouterProvider
Qué es y cuándo usarlo
Lleva los enlaces de la biblioteca (Link, ButtonLink, las migas, el menú lateral, el título de una tarjeta con href) por el enrutador de la aplicación: el clic navega sin recargar la página y, si el enrutador sabe precargar, el destino se pide antes de pulsar. Sin proveedor, cada enlace es un <a href> de verdad y cada clic recarga la página entera: funciona, pero no es lo que se espera de una aplicación.
En Next no hay que escribir el puente. Dos proveedores listos, que se ponen una vez arriba del árbol:
// App Router (layout o proveedor de cliente)
import { NextRouterProvider } from '@amset/ui/next'
// Pages Router (pages/_app)
import { NextPagesRouterProvider } from '@amset/ui/next/pages'Navegan con router.push y precargan con router.prefetch al posar el ratón o dar el foco, como next/link. next es una dependencia opcional: quien no importe esos dos subpaths no carga nada de Next, y en React puro el paquete principal no sabe que existe.
En React Router, Vite o cualquier otro enrutador, el proveedor genérico:
import { RouterProvider } from '@amset/ui'
const navigate = useNavigate()
<RouterProvider navigate={(href) => { navigate(href) }}>…</RouterProvider>Cuándo usarlo
- Una vez, arriba del árbol, en cualquier aplicación con enrutado de cliente.
prefetches opcional: si el enrutador no sabe precargar, no se pasa y no ocurre nada. Se llama una vez por destino.
Cuándo no
- No hace falta para un destino que sale de la aplicación: otro dominio,
mailto:,tel:, una descarga o untargetpropio los resuelve el navegador y el proveedor no los toca. - Un botón que no cambia de sitio no es un enlace:
Button.
Teclado: no tiene, es un proveedor. Con Control, Cmd, Mayúsculas o el botón central el enlace se abre en otra pestaña, como cualquier enlace: el proveedor no interviene.
Accesibilidad: no cambia nada de lo que anuncia el lector: sigue siendo un <a href> y se dice «enlace». Copiar la dirección, abrir en otra pestaña y los menús del navegador siguen funcionando.
Aspecto fino: no pinta nada.
Cómo se ve
Este enlace no recarga la página: ir a Button
Todavía no has pulsado el enlace.
<RouterProvider navigate={(href) => router.push(href)}>
<Link href="/componentes/button/">ir a Button</Link>
</RouterProvider>Props
Se importa con import { RouterProvider } from '@amset/ui'. Las obligatorias van marcadas.
| Prop | Tipo | Para qué sirve |
|---|---|---|
childrenobligatoria | ReactNode | — |
navigateobligatoria | (href: string) => void | Lleva a esa direccion sin recargar la pagina. Se le pasa el `href` tal cual esta escrito en el enlace: el `router.push` de Next, el `navigate` de React Router o lo que use el proyecto. |
prefetch | (href: string) => void | Pide por adelantado lo que necesita esa direccion, para que el clic sea instantaneo: el `router.prefetch` de Next. Es opcional; se llama una vez por destino cuando el raton se posa sobre el enlace o este recibe el foco, que es cuando `next/link` empieza a cargar lo suyo en un enlace sin `prefetch`. |
En el banco de pruebas
Cada estado y cada variante, para tocarlos de uno en uno, en su ficha de ui.amset.tech:
