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

250
Visualizações
¿Cómo actualizo los estados `onChange` en una matriz de objetos en React Hooks?

Recuperé datos almacenados usando useState en una matriz de objetos, los datos luego se enviaron a campos de formulario. Y ahora quiero poder actualizar los campos (estado) a medida que escribo.

He visto ejemplos de personas que actualizan el estado de una propiedad en una matriz, pero nunca del estado de una matriz de objetos, por lo que no sé cómo hacerlo. Obtuve el índice del objeto pasado a la función de devolución de llamada, pero no sabía cómo actualizar el estado usándolo.

 // sample data structure const datas = [ { id: 1, name: 'john', gender: 'm' } { id: 2, name: 'mary', gender: 'f' } ] const [datas, setDatas] = useState([]); const updateFieldChanged = index => e => { console.log('index: ' + index); console.log('property name: '+ e.target.name); setData() // ?? } return ( <React.Fragment> {datas.map((data, index) => { <li key={data.name}> <input type="text" name="name" value={data.name} onChange={updateFieldChanged(index)} /> </li> })} </React.Fragment> )
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Así es como lo haces:

 // sample data structure /* const data = [ { id: 1, name: 'john', gender: 'm' } { id: 2, name: 'mary', gender: 'f' } ] */ // make sure to set the default value in the useState call (I already fixed it) const [data, setData] = useState([ { id: 1, name: 'john', gender: 'm' } { id: 2, name: 'mary', gender: 'f' } ]); const updateFieldChanged = index => e => { console.log('index: ' + index); console.log('property name: '+ e.target.name); let newArr = [...data]; // copying the old datas array newArr[index] = e.target.value; // replace e.target.value with whatever you want to change it to setData(newArr); } return ( <React.Fragment> {data.map((datum, index) => { <li key={datum.name}> <input type="text" name="name" value={datum.name} onChange={updateFieldChanged(index)} /> </li> })} </React.Fragment> )
over 4 years ago · Santiago Trujillo Relatório

0

Puede hacer esto sin mutación asignando su matriz anterior a una nueva, intercambiando lo que desea cambiar por un elemento actualizado en el camino.

 setDatas( datas.map(item => item.id === index ? {...item, someProp : "changed"} : item ))
over 4 years ago · Santiago Trujillo Relatório

0

setDatas(datas=>({ ...datas, [index]: e.target.value }))

siendo index la posición de destino y e.target.value el nuevo valor

over 4 years ago · Santiago Trujillo 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