CodeBlanks Logo Icon CodeBlanks

Todo giriş formu

Yeni todo eklemek için bir kontrollü form yazarsın.

Todo giriş formu

Bu ders TodoForm bileşenini yazacağız. Bir <input> ve bir <button>Ekle</button> içerecek. text state'i input'a value ve onChange ile bağlanır.

Buton tıklanınca setTodos ile yeni bir todo eklenir: { '{ id: Date.now(), text, done: false }' }. Sonra setText("") ile input temizlenir.

Bu desen kontrollü bileşen (controlled component) olarak bilinir: input'un değeri React state'inde tutulur, kullanıcı her yazışında state güncellenir.

Ekleme mantığı

Butona basınca setTodos çağrılır. Yeni dizi, eskilerin sonuna yeni todo eklenmiş halidir: setTodos(prev => [...prev, { '{ id: Date.now(), text, done: false }' }]).

Bu yazım fonksiyonel güncelleme olarak bilinir ve güncel state'e güvenli şekilde erişir. Eski todo'lar bozulmadan yeni dizi oluşturulur; React değişikliği algılar ve listeyi çizim yapar.

Ekleme sonrası setText("") ile input temizlenir. Böylece kullanıcı peş peşe birden çok todo ekleyebilir.

Uygulama TodoForm yaz

Aşağıdaki iskeleti tamamla. TodoForm bileşeni yaz. ({ '{ text, setText, onAdd }' }) parametresi alsın. <form onSubmit={ '{ ... }' }> içinde <input value={ '{ text }' } onChange={ '{ e => setText(e.target.value) }' } placeholder="Görev" /> ve <button>Ekle</button> göster. onSubmit, e.preventDefault() çağırıp onAdd() yapsın. Dışa aktar.

Başlangıç kodu

App.jsx
// TodoForm bileşenini buraya yaz

Örnek çözüm

App.jsx
function TodoForm({ text, setText, onAdd }) {
  return (
    <form onSubmit={(e) => { e.preventDefault(); onAdd(); }}>
      <input value={text} onChange={(e) => setText(e.target.value)} placeholder="Görev" />
      <button>Ekle</button>
    </form>
  );
}

export default TodoForm;

Soru ve cevaplar

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

1 Kontrollü input ne demektir?

  • Input state'siz çalışır
  • Input çizilmez
  • Input sadece okunur
  • Input'un value'şu state'te tutulur Doğru cevap

Açıklama: Kontrollü input value'sunu state'ten alır.

2 Yeni todo kimliği

Soru
Yeni todo için kimlik üretmek amacıyla ____ çağrılır.
Cevap
Yeni todo için kimlik üretmek amacıyla Date.now() çağrılır.

Açıklama: Date.now() benzersiz bir sayı verir.

3 Form parçalarını eşleştir

Kavram Anlamı
input Metin alır
value={text} Bağlama
onChange Yazımı yakalar
button Ekler

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