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
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.