🛣️ Navegación entre páginas con Link y useRouter

Next.js Navegación entre páginas

07 - 🛣️ Navegación entre páginas con Link y useRouter

Aprende cómo moverte entre diferentes páginas en Next.js utilizando los componentes Link y useRouter, dos herramientas esenciales para crear una navegación fluida sin recargar la aplicación.



⚙️ Navegación programática con useRouter

El hook useRouter te permite controlar la navegación desde el código. Es muy útil para redirigir al usuario después de una acción (como enviar un formulario o hacer clic en un botón).

'use client';
import { useRouter } from 'next/navigation';

export default function Contact() {
  const router = useRouter();

  function handleClick() {
    router.push('/success');
  }

  return (
    <div className="text-center mt-5">
      <h1 className="text-2xl font-bold mb-4">Formulario de contacto</h1>
      <button onClick={handleClick} className="bg-green-600 text-white px-4 py-2 rounded hover:bg-green-700 transition">
        Enviar y redirigir
      </button>
    </div>
  );
}
      

🧩 Resultado visual:

  • router.push('/ruta'): redirige al usuario a una página específica.
  • 🔙 router.back(): vuelve a la página anterior.
  • 🔁 router.refresh(): recarga los datos de la ruta actual.

📊 Comparativa rápida

Herramienta Uso principal Tipo de navegación
Link Enlaces visibles en la interfaz Manual
useRouter Redirecciones automáticas desde funciones Programática

🧩 Ejemplo combinado — Link + useRouter

En este ejemplo combinamos ambos métodos de navegación. Usamos un Link para navegación directa y un button con router.push() para redirigir desde una acción de usuario.

'use client';
import Link from 'next/link';
import { useRouter } from 'next/navigation';

export default function NavegacionEjemplo() {
  const router = useRouter();

  return (
    <div className="text-center mt-5 space-y-4">
      <h2 className="text-2xl font-semibold">Navegación en Next.js</h2>

      <Link href="/blog" className="bg-blue-500 text-white px-4 py-2 rounded hover:bg-blue-600">
        Ver Blog
      </Link>

      <button onClick={() => router.push('/contact')} className="bg-green-500 text-white px-4 py-2 rounded hover:bg-green-600">
        Ir al Contacto
      </button>
    </div>
  );
}
      

🧩 Resultado visual:

Ver Blog
💡 Consejo: Usa Link para menús, encabezados o listas de navegación, y useRouter para redirecciones automáticas después de eventos o acciones del usuario.

Publicar un comentario

0 Comentarios