LivaDocs

useForm

Form durumunu yöneten genel amaçlı hook: alan değerleri, kirli (dirty) takibi, doğrulama kuralları, hata mesajları ve yükleme durumlu kaydetme akışını tek yerden sağlar. LivaForm'un form prop'una doğrudan bağlanabilir ya da bu sayfadaki örnekte olduğu gibi tekil editörlerle setFormItem üzerinden kullanılabilir.

import { useForm } from "@dataliva/livalib";

const form = useForm<Profil>({
  initialValues: { ad: "", eposta: "", yas: 30 },
  validationRules: {
    ad: [{ type: "required", message: "Ad alanı zorunludur." }],
    eposta: [
      { type: "required", message: "E-posta alanı zorunludur." },
      { type: "email", message: "Geçerli bir e-posta adresi girin." },
    ],
    yas: [{ type: "range", min: 18, max: 99, message: "Yaş 18 ile 99 arasında olmalıdır." }],
  },
  validateOnChange: true,
  onSave: async (data) => {
    await new Promise((res) => setTimeout(res, 800)); // sahte API çağrısı
  },
});

Canlı örnek

Alanlara yazdıkça formData güncellenir, isDirty işaretlenir ve validateOnChange: true olduğu için errors anında dolar. Sağdaki panel hook'un döndürdüğü durumu canlı gösterir. Kaydet butonu onSave'i çağırır: önce doğrulama yapılır, geçerse sahte kayıt 800 ms sürer ve isSaving bu süre boyunca true kalır; başarılı kayıtta form yeniden temiz sayılır.

Canlı form durumu
Önizleme yükleniyor…

Parametreler

AlanTipAçıklama
initialValuesTFormun başlangıç değerleri (zorunlu).
validationRulesPartial<Record<keyof T, ValidationRule[]>>Alan bazında kural dizileri.
onSave(data: T) => Promise<void> | voidonSave() doğrulamayı geçince çağrılan kaydetme fonksiyonu.
validateOnChangebooleantrue ise her alan güncellemesinde ilgili alan doğrulanır. Varsayılan: false.

Dönen Değerler

AlanTipAçıklama
formDataTGüncel form verisi.
setFormData(data: T | ((prev: T) => T)) => voidTüm form verisini değiştirir.
setFormItem(field: K, value: T[K]) => voidTek bir alanı günceller.
resetForm() => voidFormu başlangıç değerlerine döndürür, hataları temizler.
isDirtybooleanForm başlangıç değerlerinden saptı mı.
onSave() => Promise<boolean>Doğrular ve kaydeder; başarı durumunu döner.
isSavingbooleanKaydetme işlemi sürüyor mu.
markAsClean() => voidFormu elle temiz (dirty değil) olarak işaretler.
errorsPartial<Record<keyof T, string>>Alan bazında hata mesajları.
validate() => booleanTüm formu doğrular.
validateField(field: K) => booleanTek bir alanı doğrular.
clearErrors() => voidTüm hataları temizler.
clearFieldError(field: K) => voidTek bir alanın hatasını temizler.

Doğrulama kuralı tipleri

ValidationRule.type şu değerleri alır:

TipAçıklama
requiredBoş, null, undefined veya boş dizi olamaz; trim ile boşluklar kırpılır.
emailGeçerli e-posta biçimi.
numericSayıya çevrilebilir olmalı.
rangemin/max aralığında sayısal değer.
stringLengthMetin uzunluğu min/max sınırları içinde.
patternpattern (string veya RegExp) ile eşleşme.
comparecomparisonTarget (alan adı veya fonksiyon) ile eşitlik.

Her kural message alanıyla özel hata metni taşıyabilir.