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

88
Visualizações
Mostrar el número total de filtros seleccionados matriz de elementos en React

Tengo el siguiente problema. En la matriz widgetFilters (longitud === 3) quiero mostrar el número de elementos seleccionados en el encabezado del filtro.

 const [selectedFilters, setSelectedFilters] = useState([]);

ingrese la descripción de la imagen aquí

En el fragmento de código a continuación, mapeo a través de toda la matriz de widgetFilter y hago 3 acordeones con el título, el tipo de nombre Nombre del filtro y luego las opciones que contiene el filtro, por ejemplo

 <Stack> {widgetFilters.map((filter) => ( <FilterWidgetAccordion key={filter.id} headline={filter.typeName} list={filter.options} selectedFilters={selectedFilters} setSelectedFilters={setSelectedFilters} /> ))} </Stack>

ingrese la descripción de la imagen aquí

FilterWidgetAccordion.js

 <Fragment> <Accordion> <AccordionSummary aria-controls="panel1a-content" id="panel1a-header"> <StyledTypography>{headline}</StyledTypography> </AccordionSummary> <AccordionDetails> {list?.map((filterItem) => { return( <Button onClick={() => { const list = [...selectedFilters]; const index = list.indexOf(filterItem); index === -1 ? list.push(filterItem) : list.splice(index, 1); setSelectedFilters(list); }} key={filterItem.value} > {filterItem.value} </Button> )})} </AccordionDetails> </Accordion> </Fragment>

Quiero junto al título, por ejemplo, "Categoría de producto" para agregar el número de botones seleccionados. Mire la imagen a continuación.

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Debe separar los filtros para cada widget y luego mostrar la longitud de los filtros en el título, aquí hay un ejemplo:

 const updateWidgetFilters=(myFilters, widgetTypeId)=>{ setSelectedFilters((prevSelectedFilters)=>{ const selectedElement = prevSelectedFilters?.find(({typeId})=>typeId===widgetTypeId); if(selectedElement) { selectedElement.filters= myFilters; return [...prevSelectedFilters] } return [...prevSelectedFilters, {typeId: widgetTypeId, filters: myFilters}]; }); }

...

 <Stack> {widgetFilters.map((filter) => ( <FilterWidgetAccordion key={filter.id} headline={ filter.typeName+' ' +(selectedFilters?.find(({typeId})=>typeId===filter.typeId)?.filters?.length || 0) } list={filter.options} selectedFilters={selectedFilters?.find(({widgetId})=>typeId===filter.typeId)?.filters || []} setSelectedFilters={(filters)=>updateWidgetFilters(filters, filter.typeId)} /> ))} </Stack>
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