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

205
Views
El campo de texto Material-ui pierde el foco después de volver a renderizar. ¿Como arreglarlo?

Estoy usando Material-ui Textfield para representar un objeto de matriz repetible:

 const [sections, setSections] = useState([ { Title: "Introduction", Text: "" }, { Title: "Relationship", Text: "" }, { Title: "Monitoring", Text: "" } ]);

Estoy representando las secciones con la función .map. El problema es que estoy usando en mis Textfields:

 <TextField value={el.Title} onChange={(event) => { el = { ...el, Title: event.target.value }; sections[ind] = el; console.log(sections); return setSections([...sections]); }} variant="outlined" label={`Section ${ind + 1}`} style={{ margin: "auto" }} />

este método onChange. Cada vez que cambio algo en Textfield, pierde el foco. También estoy usando TextareaAutosize y el mismo método para onChange:

 <TextareaAutosize label="Message" variant="outlined" placeholder="Write here..." value={el.Text} onChange={(event) => { el = { ...el, Text: event.target.value }; sections[ind] = el; console.log(sections); return setSections([...sections]); }} className={classes.messageStyle} style={{ width: "70%", marginLeft: "2.5%" }} minRows={5} />

Pero aquí NO estoy perdiendo el enfoque y todo funciona perfectamente bien. Descubrí que perder el foco es el resultado de volver a renderizar las secciones después de establecer un nuevo estado. Esto significa que se supone que TextField es un componente nuevo y es por eso que pierdo el enfoque. La pregunta es por qué con TextareaAutosize no enfrento este problema y cómo puedo solucionarlo para TextField.

Aquí está la caja de arena:

https://codesandbox.io/s/antiguo-trabajador-td4bm?file=/src/App.js:1023-1239

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

0

ingrese la descripción de la imagen aquí

El problema está aquí, en cada renderizado (cambio de título) esta clave se cambia, y React lo considerará como un elemento nuevo, por lo que eliminará el contenido de texto anterior dentro de ese cuadro y renderizará nuevos contenidos, por lo que en cada cambio de título, React se está cargando. nuevo campo de texto por eso pierde su foco.

 {sections.map((el, ind) => ( <Box key={ind} style={{ width: "90%", margin: "0 auto" }}

esto resolverá tu problema

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!