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

82
Vistas
Error de reacción al mostrar un elemento con la misma tecla

Accidentalmente escribí algunos códigos incorrectos hoy y me gustaría saber por qué React me muestra ese resultado.

Mi código es algo como esto:

 class Prova extends React.Component { constructor (props) { super(props); this.state = { people : [], counter : 0, person : { name: "Michele", surname: "Scavino" } } } addPeople = () => { this.state.person["id"] = this.state.counter; this.state.people = [ ...this.state.people, this.state.person ]; this.setState({counter: this.state.counter + 1}); } render() { return ( <div> { this.state.people?.map(el => { return ( <div key={el.id}> {el.name} {el.surname} {el.id} </div> ) }) } <br /> <br /> <br /> <br /> <button onClick={this.addPeople}>Add person</button> </div> ); } } ReactDOM.render( <Prova />, document.getElementById('root') );

El error aquí es que cada vez que agrego una nueva persona con el botón correspondiente, copio la misma referencia del mismo objeto en la matriz y cuando voy a cambiar la ID de un elemento de la matriz, todos los ID de los elementos de la matriz cambiará, usando el operador de propagación de esta manera. Pero el problema aquí es otro. Cada vez que agrego una nueva persona, la visualización de nuevos elementos es muy extraña y no puedo entender por qué. Si hago clic en el botón seis veces, debería mostrarme 6 filas, pero en realidad no sucede. ¡¡¡Literalmente flipa!!! Sé que estoy tratando de mostrar una lista de elementos con las mismas claves, pero no puedo darme cuenta de por qué ocurre este problema... ¿Hay algún experto que pueda responder a mi pregunta adecuadamente o vincularme con algunos recursos para encontrar la respuesta? a mi pregunta? Realmente le sugiero que copie y ejecute mi código para ver el error con sus ojos. ¡Gracias!

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

No puede usar una identificación incremental dentro de su componente, ya que se cambiará junto con cada procesamiento, Reactjs aún perderá su última identificación de procesamiento.

Deberá tener una identificación consistente durante los renderizados:

Una solución muy popular es usar este generador de UUID: https://www.npmjs.com/package/uuid

about 4 years ago · Juan Pablo Isaza Denunciar

0

La clave en un mapa debe ser única. Puede usar id para establecer una clave:

 { this.state.people?.map((el) => { return ( <div key={el.id}> {el.name} {el.surname} {el.id} </div> ); }); }

Y actualice addPeople así:

 addPeople = () => { this.state.people = [...this.state.people, { ...this.state.person, id: this.state.counter }]; this.setState({ counter: this.state.counter + 1 }); };
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