Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

165
Vistas
¿Convertir el código React duplicado en un componente de orden superior sin duplicación?

Tengo un código React que está representando contenido. En este momento, el código contiene duplicación, porque el código debe mostrarse de una manera si contiene botones de llamada a la acción y de otra manera si no hay botones de llamada a la acción en los accesorios. Me piden que intente eliminar la duplicación convirtiendo el código para usar un componente de orden superior (HOC), y no he hecho este tipo de cosas antes en React. ¿Cómo haría para reducir la duplicación usando un HOC?

 const hasCtaLinks = ctaLinks && ctaLinks.length > 0 ? true : false;

El código anterior es lo que escribí para determinar si el componente debería o no mostrarse usando el bloque de código A o el bloque de código B. En el código a continuación, el leftText se refiere al contenido pasado al componente.

Aquí está el bloque de código A:

 {hasCtaLinks && ( <> <LinkComponent className="mds-d-block" type="no-styles" //...other props here > {leftText && ( <InnerComponent content={leftText || ""} /> )} </LinkComponent> <CtaComponent ctaLinks={ctaLinks} /> </> )}

Y aquí está el bloque de código B, que se representa si no hay llamadas a la acción en el contenido pasado al componente como accesorio.

 {!hasCtaLinks && leftText && ( <InnerComponent content={leftText || ""} /> )}

Puede ver que el bloque de código B es solo una duplicación del código que está en el bloque de código A.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Pude resolver este problema sin usar un HOC. Básicamente, solo propagar props.children en un componente condicional, de la siguiente manera:

 const ConditionalLink = (props: LinkProps) => { if (!props.href) { return <>{props.children}</>; } return <Link {...props}>{props.children}</Link>; };

Y luego reemplazando con en el bloque de código A anterior.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda