Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

149
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda