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

120
Visualizações
Agregar elemento al comienzo de la matriz de objetos ordenados

Tengo una pequeña aplicación con la siguiente estructura Mensajes -> Mensaje -> Comentarios -> Comentario.

El componente Publicaciones realiza una solicitud de una matriz de publicaciones ordenadas por fecha (DESC). Cada publicación tiene sus comentarios (que llegan a través de otra solicitud).

El problema al que me enfrento. Cuando agrego un nuevo elemento al comienzo de la matriz de publicaciones para mantenerlo ordenado y mostrar el más nuevo, todo el árbol de componentes se actualiza -> Componente de publicación -> Componente de comentarios, por lo tanto, para todas las publicaciones existentes actualmente en la página, habrá nuevamente una solicitud para obtener sus comentarios a pesar de que ya los tienen.

Si lo agrego al final de la matriz, esto no sucede, pero si los clasifico usando un gancho useMemo o algo así, el comportamiento descrito comienza de nuevo

Alguien tiene idea de como puedo superar esto?

Parte del código es así.

 {sortedPosts && sortedPosts.map((post, index) => ( <PostWrapper ref={posts.length === index + 1 ? setLoader : null} key={`${post?.id}${index}`} post={post} /> ) )}
 const PostWrapper = forwardRef(({post}, ref) => ( <Grid ref={ref} container justifyContent="center" item spacing={1} mt={2} xs={8} > <Post post={post} /> </Grid> ))
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Esto es lo que entendí, e intentaré responder esto según mi entendimiento. Tiene una matriz/lista de publicaciones, y cada publicación tiene una matriz/lista de comentarios. Supongo que está anidado y las publicaciones están incrustadas en la misma matriz de "Publicaciones".

Cuando actualiza la matriz de Publicaciones, React vuelve a renderizar/actualiza la página con los nuevos cambios. Cuando agrega un elemento al principio, todos los elementos se empujan una posición hacia la derecha, lo que activa una actualización para cada publicación. Y, por la misma razón, no lo ve cuando lo agrega al final.

Dos formas de evitar llamadas API adicionales para publicaciones existentes. Elija cuál se adapta mejor a su caso de uso:

  1. Cree un diccionario separado de {PostID: {Comments}} y elimínelo de la matriz de publicaciones. Agregue a este diccionario cuando se envíe/agregue una nueva publicación, y recupérelo cuando desee mostrarlo. De esta manera, incluso si hay un activador de actualización de React, simplemente lo recoge del diccionario y no realiza una llamada a la API.
  2. Agregue al final (es decir, ordene en orden ASC) y represente las publicaciones como una pila (LIFO). Esto no desencadena una actualización, y lo recomiendo.

 // Approach 2 this.setState(state => ({ posts: [...state.posts, newPost] }));

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