Consumo de APIs en Next.js con ReactQuery y useEffect
Clase 7 de 24 • Curso de Next.js Avanzado
Contenido del curso
Haciendo tu proyecto más rápido
Consumiendo datos de manera eficiente
Escalabilidad y personalización
- 10

Internacionalización en NextJS: Middleware y Rutas Dinámicas
11:19 min - 11

Internacionalización en Next.js con Traducciones Dinámicas
14:47 min - 12

Autenticación de Usuarios con Middleware en Next.js
08:36 min - 13

Administración de Cookies con Next.js y JavaScript para Autenticación
15:40 min - 14

Integración de Feature Flags en Next.js con LaunchDarkly
20:50 min - 15

Manejo de Errores en Next.js: Server Actions y Páginas de Error
14:34 min - 16

Integración de Sentry para Monitoreo de Errores en Next.js
12:47 min
Características Adicionales y Herramientas
- 17

Gestión del Caché en Next.js: Novedades y Estrategias Avanzadas
17:28 min - 18

Seguridad en Next.js: Server Actions y Componentes React
08:35 min - 19

Seguridad de Cookies y Encriptación en Aplicaciones Next.js
16:12 min - 20

Optimización de Rendimiento en Next.js: Técnicas y Herramientas
17:16 min - 21

Despliegue de Aplicaciones Next.js con Vercel y Docker
06:25 min - 22

Despliegue de Next.js en Fly.io usando Docker y configuración de Postgres
20:30 min - 23

Despliegue de Aplicaciones Next.js con Flyo y Docker
11:00 min - 24

Migración y Optimización de Páginas con Next.js
01:59 min
ResumenMétodo básico con
Crear una aplicación robusta con Next.js implica abordar los desafíos de la gestión de datos tanto en el servidor como en el cliente. Aunque los métodos básicos como useState y useEffect son útiles, librerías avanzadas como React Query simplifican enormemente el manejo de estados asíncronos y optimizan la experiencia de desarrollo.
¿Por qué es necesario consumir datos desde el cliente?
- Las aplicaciones modernas requieren datos dinámicos que no siempre están disponibles en el servidor.
- Por razones de seguridad u operativas, muchas veces el cliente no puede acceder directamente a bases de datos o servicios.
- Next.js y React permiten manejar este tipo de escenarios con componentes específicos y librerías dedicadas.
¿Cómo consumir datos en el cliente usando React?
Método básico con useState y useEffect
-
Inicializar el estado:
- Utiliza
useStatepara almacenar los datos. - Define un estado inicial vacío para manejar la información recibida.
- Utiliza
-
Efectos para realizar el fetch:
- Usa
useEffectpara ejecutar código asíncrono al montar el componente. - Realiza la petición al servidor, procesa la respuesta y actualiza el estado.
- Usa
-
Manejo de estados asíncronos:
- Implementa un sistema de estados (
loading,error,success) para gestionar la carga y posibles errores.
- Implementa un sistema de estados (
Ejemplo de uso:
const [bookmarks, setBookmarks] = useState([]);
const [status, setStatus] = useState('idle');
useEffect(() => {
setStatus('loading');
fetch('/api/bookmarks')
.then((response) => response.json())
.then((data) => {
setBookmarks(data);
setStatus('success');
})
.catch(() => setStatus('error'));
}, []);
¿Cómo optimizarlo con React Query?
-
Configura React Query:
- Instala
TanStack React Querysi no está configurado previamente. - Importa y utiliza el hook
useQuery.
- Instala
-
Define el
queryKeyy la función fetch:- El
queryKeyidentifica la consulta y gestiona el caché. - La función de fetch se integra directamente en React Query.
- El
-
Beneficios adicionales:
- Control automático de estados (
isLoading,isError,isSuccess). - Caché integrado para optimizar peticiones repetidas.
- Manejo seguro de datos y mutaciones.
- Control automático de estados (
Ejemplo con React Query:
import { useQuery } from '@tanstack/react-query';
const fetchBookmarks = async () => {
const response = await fetch('/api/bookmarks');
return response.json();
};
const { data: bookmarks, status } = useQuery(['bookmarks'], fetchBookmarks);
¿Qué alternativas existen a React Query?
- SWR: Librería desarrollada por el equipo de Vercel. Similar a React Query, se enfoca en traer datos de forma eficiente y con soporte de caché.
- Ambas herramientas son excelentes para manejar estados asíncronos y puedes elegir según las necesidades del proyecto.
¿Qué buenas prácticas aplicar al consumir datos?
- Usar librerías avanzadas: Reducen la complejidad y evitan errores comunes.
- Configurar correctamente el caché: Mejora el rendimiento y reduce el tiempo de espera en el cliente.
- Evitar duplicación de lógica: Centraliza las operaciones de fetch para facilitar el mantenimiento.