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

174
Visualizações
Reaccionar clasificación de matriz enorme (5k elementos)

Obtengo una matriz de objetos de 5k de jsonplaceholder (punto final de fotos). Y quiero ordenarlo por albumId usando una selección de Material-UI. Entonces, el problema es que el estado no se muestra correctamente. Cuando elijo las opciones 'desc', mi cuadrícula de elementos no se actualiza, pero cuando cambio el estado de clasificación a su valor inicial, se vuelve a procesar y obtengo una lista ordenada por 'desc'.

Enlace API: fotos de marcador de posición json JSON

 const handleChangeSort = (e: SelectChangeEvent) => { const sort = e.target.value; setSort(sort); }; const handleClearSort = () => { setSort(''); }; React.useEffect(() => { if (sort) { const sortedImages = filteredImages.sort( byValue((i) => i.albumId, byNumber({ desc: sort === 'desc' })) ); setFilteredImages(sortedImages); } else { setFilteredImages(images); } setPage(1); /* eslint-disable-next-line */ }, [sort]); React.useEffect(() => { console.log('NEW FILTERED IMAGES', filteredImages); }, [filteredImages]); <> {!imagesLoading && (filteredImages.length ? ( <Grid container item spacing={5} xs={12}> {filteredImages .slice(itemsOnPage * (page - 1), page * itemsOnPage) .map((image: Image) => ( <Grid item xs={4} key={image.id}> <Card> <CardHeader title={image.title.slice(0, 20)} /> <CardMedia component="img" height="100%" image={image.thumbnailUrl} alt={image.title} /> <CardActions> <Button size="small" className={classNames(classes.btn, classes.deleteBtn)} > <DeleteIcon /> </Button> <Button size="small" className={classNames(classes.btn, classes.previewBtn)} > <PreviewIcon /> </Button> </CardActions> </Card> </Grid> ))} </Grid> ) : ( <Grid item> <Typography variant="body1">No images were found</Typography> </Grid> ))} </>

Además, el useEffect, que está escuchando el cambio de las imágenes filtradas, no funciona. No obtengo el archivo console.log después de que las imágenes filtradas cambien su valor.

UPD: la clasificación predeterminada por Array.sort tampoco funciona

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

0

puede usar orderBy lodash para ordenar la matriz, también puede verificar esta respuesta: respuesta

En su caso, puede escribir el método useEffect como este

 import {orderBy} from 'lodash' React.useEffect(() => { if (sort) { setFilteredImages( orderBy(filteredImages, ['albumId'], ['desc']) ); } else { setFilteredImages(images); } setPage(1); /* eslint-disable-next-line */ }, [sort]);
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