Controlled form yönetimi ve form validasyonu nasıl yapılır?

Cevap

Küçük formlarda her alan state'te tutulur ve gönderimde doğrulanır:

function KayitFormu() {
  const [form, setForm] = useState({ email: "", sifre: "" });
  const [hatalar, setHatalar] = useState({});

  const degis = e => setForm(f => ({ ...f, [e.target.name]: e.target.value }));

  const gonder = e => {
    e.preventDefault();
    const h = {};
    if (!/^\S+@\S+\.\S+$/.test(form.email)) h.email = "Geçerli bir e-posta girin";
    if (form.sifre.length < 8) h.sifre = "En az 8 karakter";
    setHatalar(h);
    if (Object.keys(h).length === 0) kaydet(form);
  };

  return (
    <form onSubmit={gonder} noValidate>
      <input name="email" value={form.email} onChange={degis} aria-invalid={!!hatalar.email} />
      {hatalar.email && <p role="alert">{hatalar.email}</p>}
      {/* ... */}
    </form>
  );
}

Büyük formlarda her tuş vuruşunda tüm formun yeniden render olmasını önlemek için React Hook Form (uncontrolled input + ref) ve şema doğrulama için Zod yaygın tercihlerdir.

  1. Virtual DOM nedir ve reconciliation nasıl çalışır?KolayReactFrontend
  2. Listelerde key prop neden önemlidir? Index kullanmak neden sorunludur?KolayReactFrontend
  3. Controlled ve uncontrolled component farkı nedir?KolayReactFrontend
  4. useEffect bağımlılık dizisi nasıl çalışır?OrtaReactFrontend
  5. useMemo ile useCallback arasındaki fark nedir?OrtaReactFrontend
  6. Gereksiz render'ları nasıl tespit eder ve önlersiniz?ZorReactFrontend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle