Inconsistent behavior between validators: onSubmit validates error fields on change, whereas onBlur always validates on blur

Aperta
#2,007 2 commenti 2 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
react, typescript
Ambito
frontend

Direzione di ricerca

Inizia con la riproduzione minima nello StackBlitz collegato, in src/index.tsx, e confronta i flussi di convalida onBlur e onSubmit descritti nei passaggi. Traccia i punti di ingresso rilevanti del validatore nel pacchetto dei form, quindi verifica che il comportamento scelto convalidi nuovamente in modo coerente i campi con errori e che la riproduzione non richieda più un secondo blur.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

v1 v2: needs investigation
Describe the bug

After onBlur validation reveals an error, the onBlur validator will not run again until the field is blurred again. Whereas after onSubmit validation reveals an error, the onSubmit validator will re-run on change. The behavior of all the validators should be consistent. (Although it'd be more convenient for me personally if onBlur re-ran error fields on change but onSubmit re-ran them only on submit 😭)

Imo the correct behavior is to make them both revalidate error fields on change. This falls in line with the research-validated "reward early, punish late" pattern.

Your minimal, reproducible example

https://stackblitz.com/edit/github-vhbc3ekb?file=src%2Findex.tsx

Steps to reproduce
  1. Blur the first name field without entering any text. You will see an error message for the first name field.
  2. Enter text into the first name field. You will still see the error message.
  3. Blur the first name field. The error message will disappear
  4. Click the submit button. You will see an error message for the last name field.
  5. Enter text into the last name field. The error message will disappear
Expected behavior

I expected entering the text into the first name field to remove the error message without needing to be blurred first. The error message should disappear on change as soon as the field is valid the same way it works for on submit

How often does this bug happen?

Every time

Screenshots or Videos

No response

Platform
  • OS: Mac
  • Browser: Chrome v144.0.7559.97
TanStack Form adapter

react-form

TanStack Form version

v1.28.0

TypeScript version

v5.9.3

Additional context

Edit: I thought about it more and the existing onSubmit behavior can be recovered with onDynamic. That's a point in favor of changing onSubmit to work like onBlur instead of the other way around

Lingua principale
TypeScript
Stelle
6.8k
Fork
705
Merge medio
1g 12h
PR unite (30g)
14

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di TanStack/form

Tutte le issue di TanStack/form

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.