0Pricing
React Academy · Lección

El hook use() para recursos asíncronos

Lea promesas y contextos durante el renderizado con el hook use() de React 19.

El hook use() para recursos asíncronos es una lección gratuita de React Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

Bienvenida

En esta lección usará el hook use() de React 19 para leer promesas y valores de contexto directamente dentro de la función de renderizado, lo que simplifica el acceso a datos asíncronos.

¿Qué es use()?

use() es un hook de React 19 que lee un recurso —ya sea una Promise o un Context— de forma síncrona en la función de renderizado. Si la Promise está pendiente, el componente se suspende y el límite de Suspense más cercano muestra su contenido alternativo.
import { use } from 'react';

function UserProfile({ userPromise }) {
  const user = use(userPromise); // suspends if pending
  return <h1>{user.name}</h1>;
}

Pasar promesas como props

Un patrón habitual en React 19 es el siguiente: el componente de servidor crea una Promise (por ejemplo, una consulta a la base de datos), se la pasa a un componente de cliente y este la lee con use(). El límite de Suspense puede estar en cualquier punto superior.
// Server Component
export default function Page() {
  const userPromise = fetchUser(1); // NOT awaited
  return (
    <Suspense fallback={<Spinner />}>
      <Profile userPromise={userPromise} />
    </Suspense>
  );
}

// Client Component
'use client';
export function Profile({ userPromise }) {
  const user = use(userPromise);
  return <p>{user.name}</p>;
}

use() frente a useEffect para los datos

Usar useEffect para obtener datos requiere gestionar manualmente los estados de carga y error. use() con Suspense elimina todo ese código repetitivo: el cuerpo del componente simplemente lee los datos como si fueran síncronos.

use() para Context

use() también puede leer valores de contexto, igual que useContext. La diferencia es que use() puede llamarse condicionalmente (dentro de if o bucles), a diferencia de useContext, que debe seguir las Rules of Hooks.
import { use } from 'react';
import { ThemeContext } from './ThemeContext';

function Button({ danger }) {
  if (danger) {
    const theme = use(ThemeContext); // conditional — allowed with use()!
    return <button style={{ color: theme.red }}>Delete</button>;
  }
  return <button>Click</button>;
}

Gestión de errores con ErrorBoundary

Si la Promise que se pasa a use() se rechaza, React lanza el error. Envuelva el componente en un ErrorBoundary para capturarlo y mostrar un contenido alternativo.
<ErrorBoundary fallback={<Error />}>
  <Suspense fallback={<Loading />}>
    <Profile userPromise={fetchUser(id)} />
  </Suspense>
</ErrorBoundary>

use() solo en componentes de cliente

use() con una Promise funciona en componentes de cliente. En los componentes de servidor, use async/await directamente: no es necesario usar use() con Promises en el servidor.

Almacenar promesas en caché

Si un componente vuelve a renderizarse, debe recibir la misma referencia de Promise para evitar volver a obtener los datos. Cree las Promises fuera del componente o en una ubicación estable (servidor, caché o estado) y páselas como props.

Streaming con use()

Combinar use() con SSR de streaming permite a React transmitir el HTML de la página, mostrar el contenido alternativo de Suspense y después transmitir el contenido resuelto cuando se resuelve la Promise, todo en una sola conexión HTTP.

React.cache() para deduplicación

En el servidor, React.cache() (o unstable_cache de Next.js) deduplica varias llamadas a la misma función asíncrona dentro de un mismo renderizado, por lo que la base de datos solo se consulta una vez, aunque varios componentes utilicen la misma promesa.

Comprobación rápida

¿Qué hace un Client Component cuando se llama a use(promise) y la promesa aún está pendiente?

Resumen

use(promise) lee datos asíncronos de forma síncrona durante el renderizado y suspende la ejecución si están pendientes. use(context) funciona de forma condicional, a diferencia de useContext. Combínelo siempre con Suspense para la carga y con ErrorBoundary para los errores.

A continuación

Siguiente lección: **React Actions y useActionState** — definirá acciones de servidor y de cliente, y gestionará el envío de formularios con un estado de espera.

Preguntas frecuentes

¿La lección «El hook use() para recursos asíncronos» es gratis?

Sí — el texto completo de «El hook use() para recursos asíncronos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «El hook use() para recursos asíncronos»?

Lea promesas y contextos durante el renderizado con el hook use() de React 19. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «El hook use() para recursos asíncronos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Explicación de los React Server Components
  2. El hook use() para recursos asíncronos
  3. React Actions y useActionState
  4. useOptimistic para respuestas instantáneas
← Volver a React Academy