Chuck's Academy

Next.js

Data Fetching en Next.js 13 con App Router

Una de las características más potentes de Next.js es su capacidad para obtener datos de manera eficiente. El App Router en Next.js 13 facilita el manejo de Data Fetching desde el servidor o el cliente. En este capítulo, aprenderemos cómo obtener datos utilizando diferentes estrategias, como Server-Side Rendering (SSR), Static Site Generation (SSG), y Client-Side Rendering (CSR).

Server-Side Rendering (SSR) con getServerSideProps

El método getServerSideProps permite obtener datos en el servidor cada vez que un usuario accede a una página. Esto asegura que la información esté siempre actualizada y es útil para páginas donde los datos cambian frecuentemente.

javascript
"Este ejemplo utiliza getServerSideProps para obtener los datos de un producto desde el servidor antes de renderizar la página. La función fetchProductData recibe el id del producto desde los parámetros de la URL y luego muestra los detalles del producto."

El SSR es ideal para situaciones donde los datos deben estar actualizados en tiempo real o cuando los datos dependen de la solicitud del usuario.

Static Site Generation (SSG) con getStaticProps

El Static Site Generation (SSG) es un método en el que las páginas se generan de manera estática durante el tiempo de compilación, lo que permite tiempos de carga rápidos. Next.js permite usar getStaticProps para generar estas páginas, y en conjunto con Incremental Static Regeneration (ISR), podemos regenerar las páginas estáticas periódicamente.

javascript
"Este ejemplo muestra cómo usar getStaticProps para generar una página estática para cada post de un blog. Usamos la opción revalidate para regenerar las páginas cada 10 segundos. Esto permite combinar los beneficios del renderizado estático con la actualización periódica de los datos."

El uso de SSG es recomendado para páginas cuyo contenido no cambia con frecuencia y donde los tiempos de carga rápidos son esenciales.

Client-Side Rendering (CSR)

El Client-Side Rendering (CSR) es útil para obtener datos dinámicos después de que la página ya ha sido renderizada en el cliente. Esto se logra a través de llamadas a APIs desde el navegador. El CSR es especialmente útil para interacciones que requieren actualizar los datos en tiempo real, como la búsqueda de productos o filtros de contenido.

javascript
"Este código muestra una página de búsqueda que utiliza Client-Side Rendering. Los resultados se recuperan cuando el usuario introduce texto en el campo de búsqueda, y luego se muestran dinámicamente sin recargar la página."

El CSR es ideal para casos donde se necesita actualizar el contenido de la página en función de las interacciones del usuario, sin necesidad de recargar la página.

Data Fetching Híbrido

Una de las características más potentes de Next.js es su capacidad para combinar diferentes estrategias de obtención de datos. Puedes usar SSR para obtener datos en el servidor y CSR para actualizar esos datos en tiempo real en el cliente.

javascript
"Este ejemplo combina Server-Side Rendering y Client-Side Rendering. Los datos iniciales del dashboard se obtienen en el servidor con getServerSideProps, y luego los datos se actualizan cada 5 segundos en el cliente mediante una llamada a la API."

Este enfoque híbrido ofrece una experiencia de usuario más fluida al combinar lo mejor del SSR y el CSR.

Conclusión

El App Router de Next.js 13 ofrece una flexibilidad increíble para obtener y manejar datos. Podemos elegir entre Server-Side Rendering, Static Site Generation, Client-Side Rendering o combinarlos según las necesidades de nuestra aplicación. Esto nos permite optimizar tanto el rendimiento como la experiencia del usuario.

En el próximo capítulo, exploraremos cómo implementar Autenticación y Autorización en nuestras aplicaciones Next.js utilizando el App Router.


Pregúntame lo que sea