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

127
Vistas
inserte los datos del formulario en una matriz mientras hace clic en enviar en el componente funcional react.js

Estoy tratando de que los datos del área de texto en el formulario se almacenen en una matriz una vez que el usuario presiona el botón Enviar. Estoy trabajando solo con componentes funcionales. ¿Necesito usar preventDefault() para evitar que la página se actualice para que los datos se transfieran a una matriz? Necesito que el formulario aún se borre después de que el usuario presiona enviar, por lo que si uso preventDefault(), es probable que necesite crear un nuevo componente para restablecer el área de texto.

Agradezco cualquier idea! ¡Gracias por tu tiempo!

 function App () { const [value, setValue] = useState(""); const [entrylist, setEntry] = useState([]); const handleChange = () => { setValue([value]) console.log(value) } const readNWrite = () => { setEntry([entrylist]) entrylist.push(value) } return ( <div> <div> Insert Entry </div> <form class="entryForm" > <label for="newEntryId"> <span>New Entry:</span> <textarea type="text" id="newEntryId" name="newEntryName" rows="30" cols="75" defaultValue = {"What's on your mind?"} onChange={(e)=> { handleChange(e.target.value); }} /> </label> <button onClick={readNWrite}>Submit</button> </form> </div> ) }
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Deberá manejar el evento onSubmit en el formulario. Y como sospechaba, deberá llamar a event.preventDefault() para evitar que el formulario vuelva a cargar la página.

Extraiga los valores del formulario con el constructor FormData . Luego recorra los datos del formulario y agregue cada entrada a una nueva matriz.

Actualice el estado con las nuevas entradas.

 function App() { const [entries, setEntries] = useState([]); const handleSubmit = (event) => { event.preventDefault(); const formData = new FormData(event.target); const newEntries = []; for (const [name, value] of formData) { newEntries.push({ name, value }); } setEntries(newEntries); }; /** * This is here to log the changed entrylist state. */ useEffect(() => { console.log(entries); }, [entries]); return ( <div> <div>Insert Entry</div> <form class="entryForm" onSubmit={handleSubmit} > <label for="newEntryId"> <span>New Entry:</span> <textarea id="newEntryId" name="newEntryName" rows="30" cols="75" defaultValue={"What's on your mind?"} /> </label> <button type="submit" onClick={readNWrite} >Submit</button> </form> </div> ); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

  1. Necesita e.preventDefault() para evitar que ocurra la acción predeterminada del formulario, y eso debe agregarse a su controlador de eventos readNWrite .

  2. No necesita crear un nuevo componente para restablecer su área de texto, porque por lo que puedo ver en su código, está almacenando el texto en [entrylist] . Si bien handleChange maneja el cambio en el área de texto, donde se pasa e.target.value , lo que puede hacer es después de enviar el texto actual a la matriz, puede establecer el value en una cadena vacía como esta,

 const handleChange = (e) => { setValue(e.target.value); console.log(value); } const readNWrite = () => { setEntry([entrylist]); entrylist.push(value); setValue(""); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Parece que está tratando de modificar la lista de entradas directamente, lo cual no es algo que pueda hacer. En su lugar, cree una nueva matriz e inserte su valor en eso, luego establezca el valor de entryList usando este nuevo valor.

 const readNWrite = () => { const updatedList = [...entrylist]; updatedList.push(value); setEntry(updatedList); }
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