CodeBlanks Logo Icon CodeBlanks

Form kütüphaneleri

react-hook-form gibi form kütüphanelerini öğrenirsin.

react-hook-form

react-hook-form, formları yönetmek için popüler bir kütüphanedir. Manuel useState ve onChangeText yazmak yerine useForm hook'u ile form oluşturursun. Bu kütüphane performanslıdır; her tuş vuruşunda tüm bileşenin yeniden render edilmesini engeller.

Temel kullanım: const { register, handleSubmit, errors } = useForm();. register bir alanı form sistemine kaydeder. handleSubmit doğrulamadan geçerse veriyi alıp işleyicini çağırır. errors doğrulama hatalarını taşır. React Native'de register yerine Controller bileşeni kullanmak yaygındır; çünkü TextInput standart bir HTML girdisi değildir. Bu kütüphane, formları tek tip yönetmenin yanında doğrulama koşullarını bildiksel (declarative) biçimde yazma imkânı verir.

Uygulama useForm ile form yaz

Bir SimpleForm bileşeni yaz. useForm'u react-hook-form'dan içe aktar. const { register, handleSubmit } = useForm(); ile hook'u çağır. onSubmit fonksiyonu console.log(data) yapsın. Bir input ve bir Button döndür; butona onPress={handleSubmit(onSubmit)} ver.

Başlangıç kodu

App.js
// useForm'i react-hook-form'dan içe aktar

function SimpleForm() {
  // useForm hook'unu çağır
  // onSubmit fonksiyonu: veriyi logla

  return <></>;
}

Örnek çözüm

App.js
import { useForm } from "react-hook-form";
import { Button, TextInput } from "react-native";

function SimpleForm() {
  const { register, handleSubmit } = useForm();
  function onSubmit(data) {
    console.log(data);
  }
  return (
    <>
      <TextInput placeholder="Ad" {...register("name")} />
      <Button onPress={handleSubmit(onSubmit)} title="Gönder" />
    </>
  );
}

Controller ile TextInput

React Native'de TextInput standart bir HTML girdisi olmadığı için register doğrudan çalışmaz. Bunun yerine Controller bileşeni kullanırsın. Controller alanı sarar ve değişiklikleri form sistemine bildirir.

Örnek: <Controller control={control} name="email" defaultValue="" render={({ field: { onChange, value } }) => (<TextInput value={value} onChangeText={onChange} />)} />. Burada control useForm'dan alınır; name alan adıdır; render işlevi gerçek girdiyi çizer. field.onChange ile her değişiklik form sistemine iletilir. Bu yaklaşım, TextInput gibi özel girdileri react-hook-form ile uyumlu hale getirir. Doğrulama koşulları da Controller üzerine rules={{ required: true }} şeklinde yazılır.

Soru ve cevaplar

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

1 useForm'dan handleSubmit'i al

Soru
const { ____ } = useForm();
Cevap
const { handleSubmit } = useForm();

Açıklama: handleSubmit useForm'dan alınır.

2 Kavramı rolüne eşle

Kavram Anlamı
useForm Form hook'u
handleSubmit Doğrula ve gönder
Controller TextInput'ı sarar
register Alanı kaydeder

3 react-hook-form neden tercih edilir?

App.js
const { handleSubmit } = useForm();
  • Her tuş vuruşunda tüm bileşeni render eder
  • Doğrulama ve göndermeyi bildiksel yönetir Doğru cevap
  • Yalnızca web içindir
  • useState yerine geçmez

Açıklama: react-hook-form doğrulama ve göndermeyi bildiksel yönetir.

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