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

221
Views
Reaccionar entrada de formulario dinámico

Tengo un formulario React con campos de entrada dinámicos que un usuario puede agregar y eliminar campos de entrada. Cuando envío el formulario, registro los valores de cada entrada en una matriz. El problema es que no puedo escribir continuamente en una entrada. Cuando escribo una entrada, solo puedo escribir un carácter y se enfoca. ¿Cómo puedo arreglarlo?

CódigoSandbox

Aplicación.js

 import React, { useState } from "react"; import ReactDOM from "react-dom"; import "./styles.css"; function App() { const [fields, setFields] = useState([""]); function handleChange(i, event) { const values = [...fields]; values[i] = event.target.value; setFields(values); } function handleAdd() { const values = [...fields]; values.push(""); setFields(values); } function handleRemove(i) { const values = [...fields]; values.splice(i, 1); setFields(values); } function submitHandler(event) { event.preventDefault(); console.log(fields); } return ( <div className="App"> <h1>Hello CodeSandbox</h1> <form onSubmit={submitHandler}> <button type="button" onClick={() => handleAdd()}> Add Input </button> {fields.map((field, idx) => { return ( <div key={`${field}-${idx}`}> <input type="text" placeholder="Enter text" value={field || ""} onChange={(e) => handleChange(idx, e)} /> <button type="button" onClick={() => handleRemove(idx)}> X </button> </div> ); })} <button className="margin-top" type="submit"> Submit </button> </form> </div> ); } export default App;
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Reemplace su código con este

 <div key={`${"asdf"}-${idx}`}> <input type="text" placeholder="Enter text" value={field || ""} onChange={(e) => handleChange(idx, e)} /> <button type="button" onClick={() => handleRemove(idx)}> X </button> </div>
about 4 years ago · Juan Pablo Isaza Report

0

he usado un antirrebote de terceros, puedes elegir lo que quieras

código

 import React, { useState } from "react"; import AwesomeDebouncePromise from "awesome-debounce-promise"; import ReactDOM from "react-dom"; import "./styles.css"; function App() { const [fields, setFields] = useState([""]); function handleChange(i, event) { const values = [...fields]; values[i] = event.target.value; setFields(values); } function handleAdd() { const values = [...fields]; values.push(""); setFields(values); } function handleRemove(i) { const values = [...fields]; values.splice(i, 1); setFields(values); } const searchAPIDebounced = AwesomeDebouncePromise((event) => { console.log(fields); }, 100); const submitHandler = async (event) => { event.preventDefault(); const result = await searchAPIDebounced(event); }; return ( <div className="App"> <h1>Hello CodeSandbox</h1> <form onSubmit={submitHandler}> <button type="button" onClick={() => handleAdd()}> Add Input </button> {fields.map((field, idx) => { return ( <div key={`${idx}`}> <input type="text" placeholder="Enter text" value={field || ""} onChange={(e) => handleChange(idx, e)} /> <button type="button" onClick={() => handleRemove(idx)}> X </button> </div> ); })} <button className="margin-top" type="submit"> Submit </button> </form> </div> ); } export default App;
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!