Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

151
Views
ReactJS: useState para una matriz de objetos

Tengo un formulario con onChange, en la función onChange necesito guardar valores.

 const [choosenVar, setChoosenVar] = useState([ { posto1: { name: '', value: '' }, }, { posto2: { name: '', value: '' }, }, { posto3: { name: '', value: '' }, }, { posto4: { name: '', value: '' }, }, { posto5: { name: '', value: '' }, }, { posto6: { name: '', value: '' }, }, ]); const onChange = event => { const { name, value, id } = event.target; // setchoosenVar({ ...choosenVar, [`posto${id}.nome`]: value }); const newArr = [...choosenVar]; };

Ahora mi problema es para cada "id" en event.target, debo guardar el nombre y el valor en posto"id", ¿cómo puedo hacerlo?

Ejemplo:

 const onChange = event => { const { name, value, id } = event.target; // name: "Application", value: "appSett", id: "1" // in this case I should take: choosenVar.posto1 and set choosenVar.posto1.name = name, choosenVar.posto1.value= value. };
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Siempre haga una copia de las variables de estado de la matriz primero usando ... (operador de propagación).

findIndex() y actualice el objeto en el índice encontrado. Usando Object.keys() estamos obteniendo todas las claves del objeto, ya que solo nos preocupa la primera que buscamos.

Es posible que necesite propagarse nuevamente para hacer una copia del objeto para que no mute el estado de alguna manera

 const onChange = event => { const { name, value, id } = event.target; const newArr = [...choosenVar]; let foundIndex = newArr.findIndex(x => { return Object.keys(x)[0] === `posto${id}` }); let copyObject = {...(newArr[foundIndex][`posto${id}`]) }; newArr[foundIndex] = { [`posto${id}`] : copyObject }; setChoosenVar(newArr ); };

Nota: Lo anterior asume que no hay objetos vacíos. Y el Id que estás buscando existe.

Me gustaría agregar que podría ser una mejor manera de almacenar su estado. Una matriz con elementos como podría ser más fácil de manejar

 { posto: { id : 1, name: '', value: '' }, }
about 4 years ago · Juan Pablo Isaza Report

0

Puedes hacer lo siguiente:

 const { name, value, id } = event.target; setChoosenVar({ ...choosenVar, ...{`posto${id}`:value} })
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!