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

117
Vistas
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 Respuestas
Responde la pregunta

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 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