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

257
Vistas
Cómo pasar la clave a un componente clonado en reaccionar usando React.cloneElement()

Tengo un componente de pestañas que acepta la matriz de elementos como accesorios y estoy tratando de asignar la clave a los elementos clonados usando React.cloneElement() sin suerte. Estoy pasando elementos como una matriz. Mapeando esa matriz de elementos, clonando cada componente en esa matriz e intentando asignar una clave a cada elemento. Pero, sigo recibiendo la advertencia de que cada componente debe tener una clave. ¿Cómo puedo asignar claves a cada componente usando React.cloneElement()?

A continuación se muestra mi matriz de elementos que estoy pasando a mi componente Tabs.

A continuación se muestra mi componente de pestañas:

 import React, {useState, useEffect, useCallback} from 'react'; import classes from './tabs.module.css'; const Tabs = ({ tabsData, active = 0 }) => { const [activeTab, setActiveTab] = useState(active); const setActiveTabIndex = useCallback((index) => { setActiveTab(index) }, [activeTab]) return ( <div className={classes.tabsContainer}> <ul className={classes.tabsList}> { tabsData.map((item, index) => ( <li className={`${classes.tab} ${index === activeTab && classes.activeTab}`} onClick={() => setActiveTabIndex(index)}>{ item.tabTitle }</li> ))} </ul> <div className={classes.textContainer}> {tabsData[activeTab].content.map((ElementItem, index) => ( React.cloneElement(ElementItem, {key:index}) ))} </div> </div> ) } export default Tabs

A continuación se muestra la matriz que estoy pasando a ese componente de pestañas.

 const tabsData = [ { tabTitle: "Description", content: [<h1 className={classes.tabTitle}>{'Product Description'}</h1>, productDetails.shortDescription.html ? <RichContent html={productDetails.shortDescription.html} /> : <RichContent html={"<p>No short description found</p>"} />] }, { tabTitle: "Attributes", content: [<h1 className={classes.tabTitle}>{'Product Attributes'}</h1>, <CustomAttributes customAttributes={customAttributesDetails.list} />] } ]

También probé lo siguiente para intentar asignar una clave a cada elemento.

 <React.Fragment key={index}> { React.cloneElement(ElementItem) } </React.Fragment>
about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

El problema está en esta parte del código.

 <ul className={classes.tabsList}> {tabsData.map((item, index) => ( <li key={index} className={`${classes.tab} ${index === activeTab && classes.activeTab}`} onClick={() => setActiveTabIndex(index)}>{ item.tabTitle }</li> ))} </ul>

También debe agregar accesorios key a cada elemento li

about 4 years ago · Santiago Gelvez 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