CodeBlanks Logo Icon CodeBlanks

Özet - Form yönetimi

controlled, validation ve submit'i birleştirerek bir kayıt formu yazarsın.

Özet - Form yönetimi

Bu grupta kontrollü formları, form state'i, doğrulamayı, göndermeyi ve react-hook-form'u öğrendin. Kontrollü girdi value ve onChangeText ile çalışır. Form state nesnesi tüm alanları bir arada tutar; spread ile güncellenir.

Doğrulama errors state'iyle yapılır; hata varsa kırmızı Text ile gösterilir. Gönderme onPress'e bağlanır; erken return ile doğrulama kontrol edilir. react-hook-form useForm ile tüm bunları otomatikleştirir. Şimdi tüm bu parçaları birleştirip çalışan bir kayıt formu yazacaksın. İki alan, doğrulama ve gönderme olacak; kullanıcı geçerli veri girince form gönderecek.

Uygulama Kayıt formu state'i

Bir RegisterForm bileşeni yaz. useState ile form state'ini { name: "", email: "" } olarak başlat. Ayrıca errors state'ini {} olarak başlat.

Başlangıç kodu

App.js
// useState ve TextInput'u içe aktar

function RegisterForm() {
  // form state'ini başlat (name ve email)
  // errors state'ini {} ile başlat

  return <></>;
}

Örnek çözüm

App.js
import { useState } from "react";
import { TextInput } from "react-native";

function RegisterForm() {
  const [form, setForm] = useState({ name: "", email: "" });
  const [errors, setErrors] = useState({});
  return null;
}

Uygulama Kayıt formu bileşeni

Bir RegisterForm bileşeni yaz. form state'i { name: "", email: "" }, errors state'i {} olsun. handleSubmit fonksiyonu: form.email.includes("@") değilse setErrors({ email: "Geçersiz" }) yapıp return; geçerse console.log(form). İki TextInput ve bir Button döndür; butona onPress={handleSubmit} ver.

Başlangıç kodu

App.js
// useState ve Button, TextInput'u içe aktar

function RegisterForm() {
  // form ve errors state'ini başlat
  // handleSubmit fonksiyonu: e-posta kontrolü, hata veya console.log

  return <></>;
}

Örnek çözüm

App.js
import { useState } from "react";
import { Button, TextInput } from "react-native";

function RegisterForm() {
  const [form, setForm] = useState({ name: "", email: "" });
  const [errors, setErrors] = useState({});
  function handleSubmit() {
    if (!form.email.includes("@")) {
      setErrors({ email: "Geçersiz e-posta" });
      return;
    }
    console.log(form);
  }
  return (
    <>
      <TextInput
        value={form.name}
        onChangeText={(t) => setForm({ ...form, name: t })}
        placeholder="Ad"
      />
      <TextInput
        value={form.email}
        onChangeText={(t) => setForm({ ...form, email: t })}
        placeholder="E-posta"
      />
      <Button onPress={handleSubmit} title="Gönder" />
    </>
  );
}

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Kayıt formunda doğrulama ne zaman yapılır?

App.js
function handleSubmit() { /* ... */ }
  • Yalnızca bileşen açılınca
  • Yalnızca render sırasında
  • Gönderme öncesinde Doğru cevap
  • Hiçbir zaman

Açıklama: Doğrulama gönderme öncesinde yapılır.

2 Gönderme işleyicisini çağır

Soru
function ____(form) { console.log(form); }
Cevap
function handleSubmit(form) { console.log(form); }

Açıklama: handleSubmit gönderme işleyicisidir.

3 Kavramı rolüne eşle

Kavram Anlamı
controlled value ve onChangeText
form state Tüm alanları tutar
validation Kural kontrolü
onPress Butona bağlar

Orta seviye bölümündeki tüm dersler