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

414
Vistas
El campo de texto personalizado de MUI pierde el foco en el cambio de estado

Estoy usando la biblioteca MUI para crear mi aplicación React Js .

Aquí estoy usando el componente de campo de texto controlado para crear una interfaz de usuario de búsqueda simple.

Pero hay algo extraño. El componente Text Field pierde el foco después de cambiar su valor. Esta es la primera vez que me enfrento a este problema. Nunca me enfrenté a este problema antes.

¿Cómo pudo pasar esto? Y cual es la solución.

Aquí está el código y el patio de recreo: https://codesandbox.io/s/mui-autocomplete-lost-focus-oenoo ?

Nota: si elimino el breakpoint type de interrupción del código, el componente Text Field aún pierde el foco después de cambiar su valor.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Es porque está definiendo un componente dentro de otro componente, por lo que la definición del componente se recrea cada vez que el componente se procesa (y su componente se procesa cada vez que el usuario escribe en la entrada).

Dos soluciones:

  1. No lo convierta en un componente separado. En vez de:

     const MyComponent = () => { const MyInput = () => <div><input /></div>; // you get the idea return ( <div> <MyInput /> </div> ); };

    Hacer:

     const MyComponent = () => { return ( <div> <div><input /></div>; // you get the idea </div> ); };
  2. Defina el componente fuera de su componente principal:

     const MyInput = ({value, onChange}) => ( <div> <input value={value} onChange={onChange} /> </div> ); const MyComponent = () => { const [value, setValue] = useState(''); return ( <div> <MyInput value={value} onChange={event => setValue(event.target.value)} /> </div> ); };
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