0Pricing
React Academy · Lección

Explicación de los componentes de orden superior (HOC)

Envuelva componentes para inyectar props, proteger rutas o añadir registros mediante fábricas de HOC.

Explicación de los componentes de orden superior (HOC) 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.

Bienvenido

En esta lección comprenderá los componentes de orden superior (HOC), aprenderá a escribirlos, conocerá sus casos de uso habituales y analizará sus ventajas y desventajas frente a los hooks.

¿Qué es un HOC?

Un componente de orden superior es una función que recibe un componente como entrada y devuelve un componente nuevo y mejorado. El HOC añade comportamiento (como props, comprobaciones de autenticación o registros) sin modificar el componente original.
// HOC signature
function withEnhancement(WrappedComponent) {
  return function Enhanced(props) {
    // add behaviour here
    return <WrappedComponent {...props} extraProp="value" />;
  };
}

HOC de protección de autenticación

Un HOC habitual redirige a los usuarios no autenticados a una página de inicio de sesión. El componente original no necesita conocer la lógica de autenticación.
function withAuth(Component) {
  return function AuthGuard(props) {
    const isLoggedIn = useAuth();
    if (!isLoggedIn) return <Navigate to="/login" />;
    return <Component {...props} />;
  };
}

const ProtectedPage = withAuth(DashboardPage);

HOC de registro

Un HOC puede registrar cada renderizado junto con el nombre y las props del componente para facilitar la depuración. Envuelva cualquier componente con withLogger para añadir trazabilidad.
function withLogger(Component) {
  return function Logged(props) {
    console.log('[render]', Component.displayName, props);
    return <Component {...props} />;
  };
}

Pasar las props al componente envuelto

Distribuya siempre todas las props recibidas sobre el componente envuelto mediante `{...props}`. No hacerlo rompe la API del componente original.
return function HOC(props) {
  return <WrappedComponent {...props} injectedProp={value} />;
};

Configurar displayName

Los componentes devueltos por un HOC pierden su nombre en React DevTools. Establezca un displayName significativo para poder identificarlos en el árbol de componentes.
function withAuth(Component) {
  function AuthGuard(props) { /* ... */ }
  AuthGuard.displayName = 'withAuth(' + (Component.displayName || Component.name) + ')';
  return AuthGuard;
}

Reenviar refs

Los HOC bloquean las refs de forma predeterminada. Use `React.forwardRef` dentro del HOC para pasar las refs al componente envuelto.
function withStyle(Component) {
  return React.forwardRef(function (props, ref) {
    return <Component ref={ref} {...props} className="styled" />;
  });
}

HOC frente a render props y hooks

Los HOC inyectan props y pueden proteger rutas. Las render props pasan una interfaz dinámica. Los custom hooks extraen la lógica. En React moderno se prefieren los hooks porque evitan el infierno de wrappers y son más fáciles de componer. Los HOC son útiles para componentes de clase o integraciones con terceros.

Infierno de wrappers

Aplicar muchos HOC crea un anidamiento profundo en el árbol de componentes: `withTheme(withAuth(withLogger(MyPage)))`. DevTools muestra muchas capas de wrappers anónimos. Los hooks evitan esto por completo.

HOC en la práctica

`connect()` de Redux, `withRouter()` de React Router v5 y `observer()` de MobX son HOC. Comprender los HOC le ayuda a trabajar con las API más antiguas de estas bibliotecas.

Comprobación rápida

¿Qué debe hacer siempre un componente de orden superior con las props que recibe?

Resumen

Los HOC son funciones que reciben un componente y devuelven otro mejorado. Inyectan props, protegen rutas y añaden registros. Distribuya siempre las props, establezca displayName y reenvíe las refs. Prefiera los hooks en React moderno.

A continuación

Siguiente lección: **HOC frente a render props y custom hooks** — comparará las tres estrategias para compartir código en cuanto a legibilidad, pruebas y composición.

Preguntas frecuentes

¿La lección «Explicación de los componentes de orden superior (HOC)» es gratis?

Sí — el texto completo de «Explicación de los componentes de orden superior (HOC)» 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 «Explicación de los componentes de orden superior (HOC)»?

Envuelva componentes para inyectar props, proteger rutas o añadir registros mediante fábricas de HOC. 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 «Explicación de los componentes de orden superior (HOC)»?

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. Patrón de render props
  2. Explicación de los componentes de orden superior (HOC)
  3. HOC frente a render props y custom hooks
  4. Refactorizar un HOC a un custom hook
← Volver a React Academy