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

232
Vistas
¿Cómo establecer el valor de un menú de Autocompletar MUI dentro de un formulario de gancho de reacción?

Heredé un código que usa controles MUI v5 en un formulario creado con react-hook-form v6. Hay algunos controles de autocompletar donde quiero que la selección en un control actualice el valor de otro (por defecto, el usuario siempre puede cambiarlo).

Escuchar los cambios de autocompletar con watch() y luego llamar a setValue() en otro control funciona para actualizar los datos del formulario, pero el inputValue del widget de autocompletar no se actualiza visiblemente. Por lo que el usuario puede ver, nada ha cambiado en el segundo autocompletado, a pesar de que los datos que se devuelven en onSubmit() se han actualizado.

Intenté pasar inputValue como accesorio a <Autocomplete> , pero dado que está siendo controlado por react-hook-form , eso genera un error sobre el cambio del control de no controlado a controlado.

Este codesandbox demuestra el problema . Seleccionar "first" en el autocompletado de thing1 debería actualizar thing2 a "last" . Si hace clic en Enviar , los datos del formulario se registrarán en la consola, mostrando que thing2 se ha actualizado. Pero la interfaz de usuario visible no cambia.

interfaz de usuario rota

Actualizar

Como suele suceder cuando se trata de explicar un error, se me ocurrió una solución. Intenté llamar a register() con un nombre diferente en <Autocomplete> . Esto provocó que el segundo autocompletado se actualizara correctamente cuando se llamó a setValue() , pero agregó algunos campos innecesarios a los datos de envío. Luego eliminé por completo la llamada a register() (que ya estaba allí cuando comencé a mirar el código). Supongo que registrar un componente si ya es hijo de un <Controller> es innecesario, y tal vez confunda las cosas. (¿Tal vez la biblioteca debería arrojar un error en ese caso?)

El componente personalizado de trabajo que envuelve <Autocomplete> en un <Controller> se ve así:

 const ControlledAC = ({ name, control, register, options }) => ( <Controller name={name} control={control} render={(props) => ( <Autocomplete {...props} freeSolo autoSelect options={options} onChange={(_, value) => props.onChange(value)} renderInput={(params) => <TextField {...params} label={name} />} /> )} /> );

Sin embargo, esta interacción entre MUI y react-hook-form parece un poco mágica. ¿Es este el derecho de establecer mediante programación un valor en un componente <Autocomplete> ?

about 4 years ago · Juan Pablo Isaza
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