Lograr que una aplicación de React se sienta rápida y sin interrupciones depende en gran medida de cómo se gestionan los enlaces internos. Cuando se utiliza la etiqueta HTML <a> tradicional, el navegador recarga la página completa, provocando un parpadeo visible. React Router Dom ofrece una solución elegante a este problema mediante el componente Link, que permite cambiar de vista sin recargar toda la aplicación.
¿Qué es el componente Link y por qué reemplaza a la etiqueta anchor?
El componente Link forma parte de la librería React Router Dom y su función principal es manejar la navegación interna de la aplicación sin provocar un refresh del navegador [0:30]. A simple vista funciona de forma similar a la etiqueta <a> de HTML, pero la diferencia es crucial:
- La etiqueta
<a> obliga al navegador a recargar toda la página, generando un parpadeo visible [1:25].
- El componente
Link intercepta ese comportamiento y actualiza únicamente el contenido que cambia, manteniendo la experiencia fluida.
Esta distinción es la base de lo que se conoce como una Single Page Application (SPA), donde la sensación para el usuario es la de una aplicación nativa, sin cortes ni tiempos de espera innecesarios.
¿Cómo se implementa Link en un componente como el header?
Primero se importa Link desde React Router Dom y luego se envuelve el elemento que funcionará como enlace. En el ejemplo del header, el logo debe redirigir siempre a la raíz del proyecto [0:45]:
jsx
import { Link } from 'react-router-dom';
// Dentro del componente Header
<Link to="/">
<img src={logo} alt="Logo" />
</Link>
La propiedad to indica la ruta destino. En este caso, "/" representa el home de la aplicación. También se añadió un enlace de "Iniciar sesión" que dirige a la ruta /login [3:20]:
jsx
<Link to="/login">Iniciar sesión</Link>
¿Cómo conectar las vistas de login y registro entre sí?
El mismo patrón se repite en los contenedores de login y register. Dentro de la vista de login, se agrega un enlace que lleva al registro [2:15]:
jsx
import { Link } from 'react-router-dom';
<Link to="/register">Regístrate</Link>
Y dentro de la vista de registro, se coloca el enlace inverso hacia login [2:50]:
jsx
import { Link } from 'react-router-dom';
<Link to="/login">Iniciar sesión</Link>
En ambos casos se elimina cualquier etiqueta <a> que existiera previamente, ya que Link la reemplaza por completo.
¿Qué validación adicional realiza Link de forma automática?
Un detalle importante es que Link incluye una validación implícita: si el usuario ya se encuentra en la ruta a la que intenta moverse, el componente no ejecuta ninguna acción adicional [3:05]. Esto evita recargas innecesarias y mantiene el rendimiento óptimo.
Al probar en el navegador, se confirma que la navegación entre las secciones funciona sin parpadeo alguno. La URL se actualiza en la barra de direcciones conforme el usuario cambia de vista, pero la aplicación nunca se recarga por completo [3:40].
¿Cuándo usar Link en lugar de anchor en React?
La regla es sencilla:
- Link: para toda navegación interna dentro de la aplicación, es decir, rutas que ya están definidas en el router.
- Etiqueta
<a>: únicamente para enlaces externos que lleven al usuario fuera de la aplicación.
Mezclar ambas para rutas internas genera ese efecto de recarga que rompe la experiencia de una SPA. Dominar el uso de Link junto con la configuración de rutas, layouts y páginas Not Found completa el flujo básico de navegación en cualquier proyecto con React Router Dom.
¿Has tenido algún caso donde necesitaras pasar parámetros o estado adicional a través de Link? Comparte tu experiencia en los comentarios.