Sebastian Gomez
Next.js es un potente marco de trabajo que nos ayuda a construir aplicaciones web rápidas y eficientes. En este artículo, exploraremos algunas características útiles que nos permiten navegar y optimizar la navegación en nuestras aplicaciones.
El componente Link es similar al tag <a> en HTML y se encuentra en el módulo next/link. Este componente nos permite realizar enrutamiento del lado del cliente (client-side).
Ejemplo:
<Link href="/settings">
<a>settings</a>
</Link>
Asegúrate de incluir el tag <a> dentro del componente Link y omitir la propiedad href en el tag <a>, ya que debe vivir dentro del componente Link.
Para las rutas dinámicas, utiliza la propiedad as:
<Link href="/user/[id].js" as={`/user/${user.id}`}>
<a>user</a>
</Link>
A continuación, veamos cómo podemos enlazar nuestras páginas en una aplicación de notas utilizando el componente Link:
pages/notes/[id].jsx
// Importa la biblioteca 'React' para utilizar sus funcionalidades en este componente
import React from 'react'
// Importa el hook 'useRouter' de la biblioteca 'next/router' para acceder al objeto del enrutador
import { useRouter } from 'next/router'
// Importa el componente 'Link' de 'next/link' para navegar entre páginas en una aplicación Next.js
import Link from 'next/link'
// Exporta una función anónima como componente predeterminado
export default () => {
// Utiliza el hook 'useRouter' para obtener una instancia del enrutador de Next.js
const router = useRouter()
// Extrae la propiedad 'id' del objeto 'query' del enrutador para acceder al valor de 'id' en la ruta actual
const { id } = router.query
// Devuelve el JSX del componente que se mostrará en la página
return (
// Contenedor principal del componente
<div>
// Título que muestra el valor de 'id' obtenido de la ruta
<h1>Note: {id} </h1>
// Componente 'Link' que envuelve un elemento 'a' para proporcionar una navegación eficiente entre páginas
<Link href="/notes">
// Elemento 'a' que actúa como enlace para navegar a la página de 'notes'
<a>Notes</a>
</Link>
</div>
)
}
pages/notes/index.jsx
// Importa la biblioteca 'React' para utilizar sus funcionalidades en este componente
import React from 'react'
// Importa el componente 'Link' de 'next/link' para navegar entre páginas en una aplicación Next.js
import Link from 'next/link'
// Exporta una función anónima como componente predeterminado
export default () => {
// Crea un arreglo de 15 objetos 'note' con propiedades 'id' y 'title'
const notes = new Array(15).fill(1).map((e, i) => ({id: i, title: `Note: ${i}`}))
// Devuelve el JSX del componente que se mostrará en la página
return (
// Contenedor principal del componente
<div>
// Título de la página
<h1>Notes</h1>
// Itera sobre el arreglo de notas y devuelve un elemento 'div' por cada nota
{notes.map(note => (
// Contenedor de la nota individual
<div>
// Componente 'Link' que envuelve un elemento 'a' y proporciona una navegación eficiente entre páginas
<Link key={note.id} href="/notes/[id]" as={`/notes/${note.id}`}>
// Elemento 'a' que actúa como enlace para navegar a la página de la nota con el 'id' correspondiente
<a>
// Título de la nota en negrita
<strong>{note.title}</strong>
</a>
</Link>
</div>
))}
</div>
)
}
pages/index.jsx
import React from 'react'import Link from 'next/link'export default () => (
<div><h1>Index page</h1><Link href="/notes"><a>Notes</a></Link></div>
)
Cuando necesitamos cambiar de rutas desde nuestro código Javascript en lugar de usar el componente Link, podemos utilizar el objeto router y su método push para realizar enrutamiento programático.
Ejemplo:
// Importa la biblioteca 'React' para utilizar sus funcionalidades en este componente
import React from 'react'
// Importa el hook 'useRouter' de la biblioteca 'next/router' para acceder al objeto del enrutador
import { useRouter } from 'next/router'
// Exporta una función anónima como componente predeterminado
export default () => {
// Utiliza el hook 'useRouter' para obtener una instancia del enrutador de Next.js
const router = useRouter()
// Define la constante 'id' con un valor de 2
const id = 2
// Devuelve el JSX del componente que se mostrará en la página
return (
// Contenedor principal del componente
<div>
// Botón que maneja el evento 'onClick' para navegar a la página de inicio '/'
<button onClick={e => router.push('/')}>
Go Home
</button>
// Botón que maneja el evento 'onClick' para navegar a la página de 'Dashboard' con el 'id' correspondiente
<button onClick={e => router.push('/user/[id]', `/user/${id}`)}>
Dashboard
</button>
</div>
)
}
Conclusiones 🎓Espero que este artículo te haya sido útil para comprender cómo funciona la navegación y la optimización en Next.js. Si tienes alguna pregunta, opinión o deseas agregar algo, no dudes en dejar un comentario a continuación. Y si te gustó este artículo, ¡no olvides compartirlo en tus redes sociales! 😊
Creador de contenido principalmente acerca de tecnología.