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

123
Views
reaccionar reconciliación provoca resultado inesperado

hola, tengo una pregunta sobre la reconciliación de reacción.

aquí está mi código

 const Foo = () => { const [buttonId, setButtonId] = useState(1); const handleClick = (e: React.MouseEvent) => { // when I uncomment below line, submit is blocked. // e.preventDefault(); // when I comment below line, form submission not occurred. // it makes sense because Btn2 Element doesn't exist never anymore setButtonId(2); }; const handleSubmit = () => { // when click Btn 1, handleSubmit is called and printed 'submit!' console.log('submit!'); }; return ( <form onSubmit={handleSubmit}> <input type="text" name="dummy" value="dummy" /> // Why is the form submitted when I clicked on Btn 1? {buttonId === 1 ? ( <button type="button" onClick={handleClick}>Btn 1</button> ) : ( <button type="submit">Btn 2</button> )} </form> ) };

Cuando hago clic en el botón 1, el envío del formulario se procesa aunque el botón 1 no tenga type="submit" .

Lo que es aún más extraño es que cuando elimino el comentario e.preventDefault() en el controlador button1 onClick y hago clic en él, no se envía el formulario.

¿Por qué el controlador que maneja el evento de clic ( handleclick ) está limitado al primer botón involucrado en el evento de envío del siguiente botón? ¿Es el resultado esperado y correcto en la reconciliación de reacción?

Supongo que es un problema que se da en el proceso de actualización del tipo de elemento durante el proceso de reconciliación.

Ya sé que registrar diferentes teclas para cada botón puede resolver este problema. pero quiero saber por qué sucede esto.

¿Quién me va a dar un pensamiento claro?

Consulte este enlace: https://codesandbox.io/s/ecstatic-wozniak-s7r7rq?file=/src/App.js

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Intente agregar una clave al elemento del button , para que React sepa que esos son elementos diferentes

 <form onSubmit={handleSubmit}> <input type="text" name="dummy" value="dummy" /> {buttonId === 1 ? ( <button key="1" type="button" onClick={handleClick}> Btn 1 </button> ) : ( <button key="2" type="submit">Btn 2</button> )} </form>
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!