El resultado de la validación de vform de Vuetify en el watch se retrasa.
Tengo un formulario muy sencillo aquí:
<div id="app" class="pa-5">
<h3>form Valid: {{ formValid }}</h3>
<h3>input: {{ input }}</h3>
<v-form ref="testForm" v-model="formValid">
<v-text-field v-model="input" :rules="nameRules" required=""></v-text-field>
</v-form>
</div>
Con una interfaz de usuario como esta:
Tengo una propiedad “watch” en el “input” que debería imprimir el estado de “formValid” para cada tecla pulsada:
Sin embargo, imprimirá “false” para la primera letra pero luego “true” para el resto. Parece que el estado de validez del formulario se retrasa una vez.
Supongo que está relacionado con los hooks del ciclo de vida de vue, pero no tengo idea de por dónde empezar. ¡Gracias por la ayuda!
Code Pen
davy.ai
Solución
El problema parece estar relacionado con el tiempo de validación del formulario. El formulario se está validando después del evento de entrada, por lo que el estado no se actualiza inmediatamente. Para solucionar esto, podemos usar el evento
update:formValid
en lugar del eventoinput
para actualizar el estado de validación del formulario.Aquí está el código actualizado:
Ahora estamos usando el evento
@update:formValid
para actualizar la propiedadformValid
. Este evento se activa después de que se haya actualizado el estado de validación del formulario, por lo que esto debería solucionar el problema.¡Espero que esto ayude! Avísame si tienes alguna otra pregunta.