React formvalidációnál az isTouched nem azonnal reagál csak többszöri nekifutásra, mi lehet a baj?
React-hook-form formot használok, zod validációval.
Azt szeretném elérni, hogy az input mező alatt ugye megjelenjen a hibaüzenet azonnal, minden karakterleütés esetén legyen vizsgálat.
Például van egy kötelező mező, alapból ne jelezzen hibát, hisz akkor még üres minden, de miután elkezdett gépelni, és törölt mindent a mezőből, akkor azonnal jelezze a hibát.
Na most ezzel szemben a jelenlegi állapotban az van, hogy isTouched figyelés van a mezőre, a form elvileg minden change-re reagál:
const { register, getValues, setValue, getFieldState, formState } = useForm<FormSchemaType>({
mode: 'onChange',
resolver: zodResolver(userSchema),
});
És nem jelez hibát, ki kell kattintanom az inputmezőből, majd vissza, megint beírni valamit, megint visszatörölni, és akkor már helyesen működik a dolog change-re.
Mi lehet ezzel a gond? Mintha az isTouched nem viselkedne a legmegfelelőbben.
Meg amúgy csak az isDirty és az isTouched állapotok vannak?
Mintha ez elég kevés lenne.
Angular esetén van ugye a pristine, eddig azt használtam ugyanerre a célra, ezért tűnik ez kevésnek nekem.
Az egyik lehetőség az lenne, ha a register függvényhez adna hozzá egy required attribútumot a mezőhöz. Például:
register({ name: "fieldName", required: true });
Ez jelezni fogja, ha a mező üres.
Másik lehetőség ha a formState.submitCount-ot használod, ami azt jelzi hogy hányszor volt a submit gombra kattintva. Ha a formState.submitCount>0 és a getValues()['fieldName'] üres, akkor jelezheted a hibát.
További kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!