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
Reacciona un comportamiento extraño cuando se llama como función y cuando se llama como componente, el enfoque en la entrada desaparece después de escribir un carácter

Soy un principiante de reacción y me gustaría crear 2 entradas para nombre y apellido.

Cuando llamo a <Item/> , el foco en la entrada desaparece después de escribir un carácter, pero cuando llamo a {Item()} todo funciona bien como se esperaba. Me parece un comportamiento extraño y mi pregunta es ¿por qué? ¿Algunas ideas?

 const { useState } = React; function Item() { const [firstName, setFirstName] = useState("John"); const [lastName, setLastName] = useState("Rambo"); function HandleFirstNameChange(event) { setFirstName(event.target.value); } function HandleLastNameChange(event) { setLastName(event.target.value); } // display function Display(props) { return ( <div> {firstName}, {lastName} </div> ); } // edit function Edit(props) { return ( <div> <form> <input type="text" value={firstName} onChange={HandleFirstNameChange} /> <input type="text" value={lastName} onChange={HandleLastNameChange} /> </form> </div> ); } return ( <div> <Display /> {/* here after typing one character focus of input disappears */} <Edit /> {/* here everything works fine as expected */} {Edit()} {/* whyyyy?? */} </div> ); } ReactDOM.render(<Item />, document.body);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.2/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.2/umd/react-dom.production.min.js"></script>

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

0

Esto se debe a que está definiendo el componente Editar dentro del componente Elemento y, por lo tanto, en cada procesamiento, la función Editar se definirá nuevamente y, por eso, reaccionar intentará reemplazarlo en el árbol DOM en cada procesamiento.

Cuando está llamando a la función, en realidad no está utilizando la función de edición como un componente de React. El siguiente código funcionará bien.

 import React, { useState } from "react"; // display function Display(props) { const { firstName, lastName } = props; return ( <div> {firstName}, {lastName} </div> ); } // edit function Edit(props) { const { firstName, HandleFirstNameChange, lastName, HandleLastNameChange } = props; return ( <div> <form> <input type="text" value={firstName} onChange={HandleFirstNameChange} /> <input type="text" value={lastName} onChange={HandleLastNameChange} /> </form> </div> ); } function Item() { const [firstName, setFirstName] = useState("John"); const [lastName, setLastName] = useState("Rambo"); function HandleFirstNameChange(event) { setFirstName(event.target.value); } function HandleLastNameChange(event) { setLastName(event.target.value); } return ( <div> <Display firstName={firstName} lastName={lastName} /> {/* here after typing one character focus of input disappears */} <Edit firstName={firstName} lastName={lastName} HandleFirstNameChange={HandleFirstNameChange} HandleLastNameChange={HandleLastNameChange} /> </div> ); } export default Item;
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!