CodeBlanks Logo Icon CodeBlanks

Form gönderimi

Form gönderimini yakalayıp veriyi okumayı öğrenirsin.

Form gönderimi

Kontrollü inputları bir form içine alıp onSubmit ile tek seferde işleyebilirsin. Handler, e.preventDefault() ile yenilemeyi durdurur, sonra state'i okur.

Her input ayrı bir state parçasıdır; gönderimde hepsini bir araya getirip işlersin. Bu, çok alanlı formların temelidir.

Submit düğmesi type="submit" olunca formun onSubmit'ini tetikler; Enter da çalışır.

Çok alanlı form

Birden çok alanı ya ayrı useState'lerle ya da tek bir nesne state'le tutarsın. Nesne yaklaşımında spread ile güncellersin.

Örnek: setForm(f => ({...f, name: e.target.value})). Bu, her input için ayrı bir handler yazmaktan kurtarır; tek bir handleChange yeter.

İleride React Hook Form ile bu yükü azaltacağız; şimdilik temel yaklaşımı öğreniyoruz.

Uygulama Gönderimli form

Aşağıdaki iskeleti tamamla. GreetForm bileşeni yaz; useState'i içe aktar. const [name, setName] = useState(""); tanımla. handleSubmit (parametre e) ilk satırda e.preventDefault() çağırır. <form onSubmit={handleSubmit}> içinde <input value={name} onChange={e => setName(e.target.value)} /> ve <button type="submit">Gönder</button> döndür. Dışa aktar.

Başlangıç kodu

App.jsx
import { useState } from "react";

// GreetForm bileşenini buraya tanımla

Örnek çözüm

App.jsx
import { useState } from "react";

function GreetForm() {
  const [name, setName] = useState("");
  function handleSubmit(e) { e.preventDefault(); }
  return <form onSubmit={handleSubmit}><input value={name} onChange={e => setName(e.target.value)} /><button type="submit">Gönder</button></form>;
}

export default GreetForm;

Soru ve cevaplar

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

1 Form gönderiminde ilk iş ne olmalıdır?

App.jsx
preventDefault stops the browser reload.
  • state güncelleme
  • fetch çağrısı
  • render etme
  • e.preventDefault() Doğru cevap

Açıklama: Önce sayfa yenilenmesi engellenir.

2 Form gönderimi: eksik parçayı tamamla

Soru
function handleSubmit(e) { ____; send(text); }
Cevap
function handleSubmit(e) { e.preventDefault(); send(text); }

Açıklama: Önce öntanımlı davranışı engelledin.

3 Form gönderimi: kavramları eşleştir

Kavram Anlamı
onSubmit Form gönderim
e.preventDefault() Yenilemeyi engeller
type="submit" Gönderen düğme
setForm({...f}) Nesne güncelleme

Başlangıç bölümündeki tüm dersler