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

151
Vistas
formas de reacción Componente controlado

Estoy tratando de crear un formulario donde los campos de entrada se puedan generar dinámicamente. Mientras se ejecuta, se ejecuta pero reacciona y arroja una advertencia sobre no ser un componente controlado. Cualquier ejemplo para la solución que busco en línea usa clases y constructores, ¿hay alguna otra forma de hacerlo sin usar clases?

 import { useState } from 'react'; function Try() { const [formFields, setFormFields] = useState([ { StepNo: '', StepDisc: '' }, ]) const handleFormChange = (event, index) => { let data = [...formFields]; data[index][event.target.name] = event.target.value; setFormFields(data); } const submit = (e) => { e.preventDefault(); console.log(formFields) } const addFields = () => { let object = { StepNo: '', StepDiscs: '' } setFormFields([...formFields, object]) } const removeFields = (index) => { let data = [...formFields]; data.splice(index, 1) setFormFields(data) } return ( <div className=""> <form onSubmit={submit}> {formFields.map((form, index) => { return ( <div key={index}> <input name='StepNo' placeholder='StepNo' onChange={event => handleFormChange(event, index)} value={form.StepNo} /> <input name='StepDisc' placeholder='StepDisc' onChange={event => handleFormChange(event, index)} value={form.StepDisc} /> <button onClick={() => removeFields(index)}>Remove</button> </div> ) })} </form> <button onClick={addFields}>Add More..</button> <br /> <button onClick={submit}>Submit</button> </div> ); } export default Try;
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

No está relacionado con el error que tiene, pero le sugiero que vincule la clave a una clave única, ya que puede generar problemas impredecibles cuando elimina los elementos.

 const addFields = () => { // Id should has a unique a id to be used in as a key. const id = generateUniqueKey() let object = { StepNo: '', StepDiscs: '', id } setFormFields([...formFields, object]) } {formFields.map((form, index) => { return ( <div key={form.id}> <input name='StepNo' placeholder='StepNo' onChange={event => handleFormChange(event, index)} value={form.StepNo} /> <input name='StepDisc' placeholder='StepDisc' onChange={event => handleFormChange(event, index)} value={form.StepDisc} /> <button onClick={() => removeFields(index)}>Remove</button> </div> ) })}
about 4 years ago · Juan Pablo Isaza Denunciar

0

Solo hay un error tipográfico en su código cuando inicializa nuevos datos de formulario al agregar. En vez de

 let object = { StepNo: '', StepDiscs: '' }

Debería ser

 let object = { StepNo: '', StepDisc: '' }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Necesitas cambiar StepDiscs a StepDisc :-)

 const addFields = () => { let object = { StepNo: '', StepDiscs: '' }
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