Taisyklės ir validacijos progresija
Formos — vieta, kur susitinka duomenys, validacija ir UX. Pastatysim nustatymų formą (vardas, el. paštas, tema, numatytosios reikšmės), kuri tikrai keičia programą ir išsaugoma. O svarbiausia — išmoksim, kada rodyti klaidas.
Pernaudojamos taisyklės. Užuot rašę validaciją kiekvienai formai iš naujo, darom grynas funkcijas, kurios komponuojasi:
const rules = {
displayName: [required('Display name'), maxLength(40, 'Display name')],
email: [email()], // neprivalomas, bet jei įrašytas — turi būti teisingas
avatarUrl: [url()],
};
Kiekviena taisyklė — funkcija, grąžinanti klaidos tekstą arba null. Jos neturi DOM ir būsenos, tad lengvai testuojamos.
Validacijos progresija — svarbiausia šios pamokos dalis. Kada patikrinti lauką? Yra trys pakopos, ir jos mokamos tokia tvarka:
- Per submit. Paprasčiausia — patikrini viską pateikiant. Bet vartotojas apie klaidą sužino vėlai, užpildęs visą formą.
- Per blur. Kai vartotojas palieka lauką, iškart jį patikrini. Greitesnis grįžtamasis ryšys.
- Per keystroke — bet tik jau parodžius klaidą. Kai laukas jau rodo klaidą, tikrini kiekvieno klavišo metu, kad klaida dingtų vos ją ištaisius.
Trečioji pakopa — subtili. Tikrinti kiekvieno klavišo metu nuo pat pradžių yra priešiška: „El. paštas neteisingas" po pirmos raidės erzina. Bet kai jau apsiskundei, tolesnis tikrinimas tampa naudingas — vartotojas mato, kaip klaida nyksta betaisant. Tai — tikras UX sprendimas, užrašytas kode.
Ir laukia realus CSS spąstas, kurį patys sugavom: pusė įvesties laukelių atrodė kitaip nei kiti.