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

83
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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