Conceptos básicos de Next.js 14
¿Qué es Next.js y por qué aprenderlo si quieres ser frontend senior?
Arquitectura de un proyecto de Next.js
Herramientas y stack utilizado en el curso
Cómo crear rutas en Next.js
Cómo crear Layout en Next.js
Cómo funciona la navegación en Next.js
Manejo de parámetros en rutas en Next.js
React Server Components en Next.js: notación "use Client"
Creación de arquitectura de landing page en Next.js
Quiz: Conceptos básicos de Next.js 14
Manejo de estilos y estáticos en Next.js 14
CSS Modules en Next.js 13
Uso de Sass en Next.js
Cómo utilizar estilos globales en Next.js
Cómo agregar archivos estáticos en Next.js
Manejo y optimización de imágenes con Next Image
Optimización del componente image en Next.js
Optimización de fuentes con Next.js
Creando estilos dinámicos aplicando condicionales en Next.js
Quiz: Manejo de estilos y estáticos en Next.js 14
Data Fetching en Next.js
Creación de tienda de Shopify para un proyecto en Next.js
Manejo de variables de entorno en Next.js
Cómo obtener información de una API con Next.js
Manejo de estado de carga con el archivo loading.tsx
Route Grouping en Next.js
Manejo de errores en la UI con el archivo error.tsx
Quiz: Data Fetching en Next.js
Next.js Avanzado
Implementando páginas de Not Found y error global
Cómo impactan los React Server Components en un proyecto en Next.js
Cuándo utilizar layout o template en Next.js
Arquitectura profesional para data fetching en un proyecto en Next.js
Next.js para backend: manejando rutas con archivos Route Handlers
Proyecto: implementando la página de tienda
Patrones de data fetching en Next.js
Proyecto: filtrando categorías de productos
Data fetching de parámetros en el servidor y cliente
Proyecto: página de producto y arreglos en el sitio
Cómo funciona el Fetch y el Caché de Next.js
Revalidando cache con revalidateTag y revalidatePath en Next.js
Cómo hacer redirects en Next.js
Proyecto: HTML dinámico en la descripción del producto
Mejorando SEO de una página en Next.js
Quiz: Next.js Avanzado
Autenticación y autorización
Manejando autenticación y autorización con Storefront APÏ de Shopify
Server Actions en Next.js
Proyecto: proceso de Sign-Up con GraphQL
Manejo de cookies para colocar un token de acceso de un proyecto en Next.js
Cómo implementar un flujo de login en un proyecto en Next.js
Validando token de acceso de usuario en un proyecto en Next.js
Proyecto: implementando el carrito de compras
Manejo de estado global con zustand en Next.js
Proyecto: agregando items al carrito de compras
Cómo integrar el checkout de Shopify a un proyecto en Next.js
Implementar middleware en proyecto en Next.js para protección de rutas
Inteligencia Artificial
Creando componente de chatbot de ventas con la SDK IA de Vercel
Implementación de un bot de ventas en una app Next.js
Performance
Optimización de carga con parallel routing en Next.js
Análisis de bundle para Next.js 14
Quiz: Performance
Frontend Ops
Edge runtime
Despliegue de un proyecto Next.js en Vercel
Mejores prácticas en arquitecturas empresariales
Quiz: Frontend Ops
Next.js es parte de tu nuevo stack
¡Has creado un proyecto en Next.js!
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Comenzar un proyecto puede ser intimidante, especialmente cuando se trata de manejar rutas complejas. Aquí te guiaremos paso a paso para crear una ruta dinámica en tu aplicación, usando los patrones de búsqueda de manera efectiva.
Primero, debes dirigir tu atención a la estructura de tu carpeta de proyectos, específicamente a la carpeta de la aplicación. Allí, crea una nueva carpeta llamada Product
y dentro de ella, una ruta dinámica con corchetes, nombrándola Handle
.
Dentro de la carpeta de ruta dinámica Handle
, crea un archivo llamado page.tsx
. Este archivo contendrá una función exportable y asíncrona, llamada productPage
, que regresará un simple título.
export default async function productPage() {
return <h1>Product Page</h1>;
}
Con este pequeño fragmento de código, has creado una base en la que podrás extender tus funcionalidades, permitiéndote tener una vista individual de un producto. A continuación, accede a la ruta en tu navegador para confirmar que todo funcione correctamente ingresando una dirección local, como http://localhost/Product/vehículo-volador
.
El siguiente paso es aprender a hacer fetch
usando los search patterns de tu producto. Comienza creando una interfaz llamada ProductPageProps
. Esta interfaz contendrá un objeto searchPatterns
y su propiedad id
.
interface ProductPageProps {
searchPatterns: {
id: string;
};
}
Incluye estas props en tu página de productos y utiliza console.log
para verificar que estás obteniendo el ID correcto.
export default async function productPage(props: ProductPageProps) {
console.log(props.searchPatterns.id);
return <h1>Product Page</h1>;
}
Al abrir la consola, deberías ver el ID correspondiente, permitiéndote interactuar con la variante o ID del producto.
Si estás trabajando con componentes anidados dentro de tu aplicación y no tienes acceso directo a los parámetros, puedes usar el hook useParams
. Este hook es esencial al trabajar en componentes de tipo cliente.
import { useParams } from 'react-router-dom';
function NestedComponent() {
const params = useParams();
console.log(params.handle);
}
Este enfoque es valioso cuando los componentes están profundamente anidados y no puedes pasar las props directamente desde el nivel superior. Sin embargo, es importante recordar que los hooks no deben usarse dentro de componentes asíncronos.
Para acceder a los search parameters o searchParams
, utiliza el hook useSearchParams
. Similar al anterior, este hook también es exclusivo para componentes cliente.
import { useSearchParams } from 'react-router-dom';
function ClientComponent() {
const [searchParams] = useSearchParams();
const id = searchParams.get('id');
console.log(id);
}
A diferencia de useParams
, useSearchParams
no devuelve un objeto, sino que obtenemos los parámetros mediante una función get
. Esto es particularmente útil si estás desarrollando experimentos de A/B testing, configuraciones de página, o haciendo tracking analítico mediante URLs.
Al implementar estos conceptos, has aprendido a manejar parámetros dinámicos y de búsqueda en tus aplicaciones. Recuerda la importancia de distinguir entre params y searchParams: mientras los primeros son útiles para recursos específicos, los segundos brindan flexibilidad al agregar configuraciones adicionales a tus URL. ¡Continúa refinando tus habilidades y observa cómo construyes aplicaciones más robustas y dinámicas! 🛠️🚀
Aportes 0
Preguntas 0
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?