4-Navegación
por Ariel GonzAgüer
última actualización: 26-8-2026
Link
Este es el componente que debemos usar para crear enlaces de navegación interna. Acepta una prop `to` que indica la ruta a la que se quiere navegar, y que se obtiene automáticamente antes de la navegación.
En este proyecto, podemos ver el uso de `<Link>` en el header para navegar entre las diferentes páginas:
useRouter
El hook `useRouter` se puede usar para inspeccionar la ruta actual y realizar navegaciones programáticas.
Propiedades del router
El objeto router tiene dos propiedades relacionadas a la ruta actual:
path: tipostring.query: tipostring.
Métodos del router
El objeto enrutador también contiene varios métodos para la navegación programática:
- →
router.push(to: string)- Navegar a la ruta proporcionada - →
router.prefetch(to: string)- Precargar la ruta proporcionada - →
router.replace(to: string)- Reemplazar la entrada actual del historial - →
router.reload()- Recargar la ruta actual - →
router.back()- Navegar a la entrada anterior en el historial de sesiones - →
router.forward()- Navegar a la siguiente entrada en el historial de sesiones
Acá un ejemplo de uso de `useRouter`, donde vemos `path`, `query`, `router.push()` y `router.reload()`:
Puede ver la página que usa este componente aquí acá → página que usa el componente Router.
Nota: al ser un hook, solo podemos usarlo en Componentes de Cliente.
Navegación tipada (Typed Routes)
Desde Waku 1.0, las APIs de navegación aceptan objetivos tipados. Al navegar a rutas dinámicas, los parámetros se verifican en tiempo de compilación:
Las propiedades del objetivo tipado son:
- →
to: el patrón de ruta (ej:/posts/[slug],/docs/[...path]). - →
params: requerido cuando el patrón tiene segmentos dinámicos, tipado desde el patrón. - →
hash(opcional): fragmento de la URL. - →
search: parámetros de búsqueda tipados por ruta mediante un "search codec".
La forma de string plano sigue funcionando: router.push('/posts/hello').
Navegación instantánea (Instant Navigation)
Waku puede cachear las partes estáticas de una ruta y mostrarlas inmediatamente al navegar, mientras las partes dinámicas se cargan en segundo plano. Esto se logra con la prop experimental unstable_instant en <Link>:
Para que funcione, se necesita:
- → Que el shell estático de la ruta ya esté en caché (por una visita anterior o un prefetch).
- → Que la parte dinámica de la página esté dentro de un componente
<Suspense>.
Cuando el shell está en caché, el layout y el fallback de <Suspense> aparecen sin espera, y el contenido dinámico se transmite una vez que el servidor responde. Si el shell no está en caché, la navegación se comporta normalmente (espera la respuesta del servidor).