Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

234
Visualizações
¿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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda