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

147
Vistas
Agregue dinámicamente un elemento en el acordeón react-bootsrap

Estoy obteniendo mis datos de la base de datos. Luego, me gustaría que se categorizaran por "item_category" y tenerlos en acordeón de arranque de reacción.

Hasta ahora tengo esto:

 <Accordion> { items.map((item, index) => { if(item.item_category === "Submachines"){ return ( <Accordion.Item eventKey={index} key={index}> <Accordion.Header>{item.item_category}</Accordion.Header> <Accordion.Body> <Item key={index} itemName={item.item_name} itemImageUrl={item.item_image} itemCategory={item.item_category} sellPrice={item.sell_price} buyPrice={item.buy_price} slotSize={item.slot_size} /> </Accordion.Body> </Accordion.Item> ); } }) } </Accordion>

Pero es un poco incorrecto ya que esto está creando un elemento de acordeón para cada elemento en la matriz de elementos. Lo que me gustaría tener es que cada categoría tenga solo un elemento de acordeón.

¿Puede alguien señalarme en la dirección correcta, por favor? Gracias

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

0

Puede obtener elementos del backend ya agrupados por categoría o puede solicitar una categoría mientras itera sobre sus elementos, guardarlos agrupados por categoría y solo luego renderizar Accordion.Item para cada categoría:

  • Iterar sobre elementos
  • Crear un objeto para categorías
  • Busque si item.item_category existe como propiedad en su objeto de categorías
  • Si no, primero cree la propiedad, luego agregue el elemento como valor en una lista
  • En caso afirmativo, agregue el elemento como valor en una lista
  • Cuando haya terminado con la iteración, itere sobre su objeto de categorías y represente un Accordion.Item para cada propiedad (= categoría).

Objeto de categorías de ejemplo:

 const categories = { "catA": [ item1, item2, item3], "catB": [ item4, item5, item6], "catC": [ item7, item8, item9] }

Editar :

Consulte los siguientes códigos y caja: https://codesandbox.io/s/charming-mirzakhani-9n344i

 const categories = {}; for (const item of items) { if (item.item_category in categories) { categories[item.item_category].push(item); } else { categories[item.item_category] = [item]; } } return ( <Accordion> {Object.entries(categories).map((entry) => { const category = entry[0]; const itemList = entry[1]; return ( <Accordion.Item eventKey={category} key={category}> <Accordion.Header>{category}</Accordion.Header> <Accordion.Body> {itemList.map((item) => ( <span>{item.name} </span> ))} </Accordion.Body> </Accordion.Item> ); })} </Accordion> );
about 4 years ago · Juan Pablo Isaza Denunciar

0

Una forma más limpia de lograr esto, primero necesita obtener una categoría agrupada de elementos y luego crear Accroding.Item para cada categoría como esta:

 const categorySet = new Set(); items.map((item) => categorySet.add(item.item_category)); const categoryArray = [...categorySet] categoryArray.map(category => <According.Item .... rest of the component code
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