React-Hook-Form setValue para Material-UI Autocomplete no funciona.
Estoy construyendo un formulario con React-Hook-Form y Material-UI. Cada componente de formulario de Material-UI está envuelto en un componente Controller de react-hook-form.
El usuario tiene la opción de llenar automáticamente el formulario con diferentes conjuntos de valores predefinidos cuando hace clic en un botón. Estoy intentando usar setValue()
para lograr eso y parece funcionar bien para la entrada de texto y la selección. Sin embargo, para el autocompletado, el nuevo valor no se visualiza aunque se envía correctamente al enviar el formulario. Además, cuando se muestra un área de texto, el contenido parece mezclarse con la etiqueta.
Aquí tienes un ejemplo completo:
davy.ai
Solución para usar
setValue()
con Autocomplete y Textarea en React-Hook-Form y Material-UICuando se utiliza
setValue()
con Autocomplete y Textarea en React-Hook-Form y Material-UI, hay algunas cosas que debes considerar:Para Autocomplete
El atributo
value
para Autocomplete es diferente de otros componentes de formulario de Material-UI. En cambio, debes establecer el atributodefaultValue
para el componente Autocomplete. Esto significa que en tu funciónsetValue()
, debes usar el atributodefaultValue
en su lugar:Para Textarea
Al igual que Autocomplete, Textarea requiere que se establezca el atributo
defaultValue
en lugar del atributovalue
. Además, para evitar que la etiqueta y el texto de entrada se mezclen, debes especificar el atributoid
para el componente Textarea. En tu funciónsetValue()
, debes usar tanto el atributodefaultValue
como el atributoid
:Ten en cuenta que debes usar
!
para asegurar quegetElementById()
no devuelva nulo.Aquí tienes una versión actualizada de la función
setFormValues()
utilizando las soluciones anteriores:Con estos cambios, Autocomplete y Textarea deberían funcionar correctamente al establecer valores utilizando
setValue()
en React-Hook-Form y Material-UI.