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

268
Visualizações
React & Framer Motion: la eliminación de la lista hace que se reproduzca la animación inicial cuando el mapa devuelve un componente

¿Podría alguien explicarme por qué ocurre este problema? Tengo una matriz de objetos que están mapeados y se desvanecen cuando se agregan a la matriz.

Si dentro del mapa, devuelvo el código jsx real para el objeto, luego, cuando el objeto se elimina de la matriz, anima las tarjetas restantes como debería.

 {cards.map((c) => { return ( <motion.div key={key} variants={variant} layout} > ...ETC </motion.div> ); })}

Sin embargo, si dentro del mapa uso un componente separado, no se anima y, en cambio, hace que todos los objetos después del objeto eliminado se desvanezcan en la opacidad nuevamente.

 {cards.map((c) => { return <Card data={card} />; })}

Puede ver una comparación aquí (haga clic para eliminar la tarjeta)
Mapa que devuelve el código JSX (funciona): https://codesandbox.io/s/crimson-http-qtpi0
Componente de retorno del mapa (no funciona): https://codesandbox.io/s/romantic-dewdney-dfqlp

No soy la persona más educada sobre React. ¿Alguien podría indicarme la dirección correcta para resolver este problema? Gracias.

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

0

Cuando devuelve una lista de elementos como ese, cada uno debe tener una clave única. De esa manera, cuando la lista cambia, React puede identificar qué elementos cambiaron. (Podría tener varios elementos con los mismos datos).

De hecho, si miras en la consola de tu segundo ejemplo hay un error que te dice precisamente eso:

Advertencia: cada niño en una lista debe tener un accesorio de "clave" único.

Para solucionarlo, agregue una clave única a los elementos <Card> , como lo hizo en su primer ejemplo.

No estoy seguro de si se garantiza que sus valores npa o npx sean únicos. De lo contrario, puede agregar un campo de id a los datos.

 {cards.map((c) => { return <Card data={card} key={c.id} />; })}
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