0Pricing
React Academy · Ders

useFieldArray ile Dinamik Alanlar

useFieldArray hook'unu kullanarak dinamik form alanları ekleyin, kaldırın ve yeniden sıralayın.

useFieldArray ile Dinamik Alanlar, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.

Hoş Geldiniz

Bu derste, öğe ekleme, kaldırma ve yeniden sıralama gibi dinamik alan listelerine sahip formlar oluşturmak için React Hook Form'un useFieldArray kancasını kullanacaksınız.

useFieldArray Nedir?

useFieldArray, bir React Hook Form içindeki alan dizisini yönetir. Alan listesini değiştirmek için append, prepend, remove, swap, move ve insert yöntemlerini sağlar.
import { useFieldArray } from 'react-hook-form';

const { fields, append, remove } = useFieldArray({
  control,
  name: 'phoneNumbers',
});

Kurulum: useForm'dan control

useFieldArray, useForm içindeki `control` nesnesini gerektirir. Bu nesneyi register ve handleSubmit ile birlikte ayrıştırın.
const { register, control, handleSubmit } = useForm({
  defaultValues: { phoneNumbers: [{ value: '' }] },
});

Alanları Oluşturma

Her öğeyi oluşturmak için `fields` üzerinde map uygulayın. React anahtarı olarak alanın `id` değerini kullanın (index değerini değil). Her alanı dizi yolu söz dizimini kullanarak kaydedin.
return fields.map((field, index) => (
  <div key={field.id}>
    <input
      {...register(`phoneNumbers.${index}.value`)}
    />
    <button onClick={() => remove(index)}>Remove</button>
  </div>
));

Yeni Alan Ekleme

Listenin sonuna yeni bir alan eklemek için varsayılan değer nesnesiyle append() çağırın. Form bu alanı otomatik olarak kaydeder.
<button onClick={() => append({ value: '' })}>
  Add Phone Number
</button>

Alanları Kaldırma

Belirli bir konumdaki alanı silmek için remove(index) çağırın. Sonraki tüm alanlar bir konum yukarı kayar ve kayıtları otomatik olarak güncellenir.
<button onClick={() => remove(index)}>Delete</button>

En Az Alan Doğrulaması

En az bir alan bulunduğundan emin olmak için dizi uzunluğunu bir Zod schema içinde .min() ile doğrulayabilirsiniz.
const schema = z.object({
  emails: z.array(z.object({ value: z.string().email() }))
           .min(1, 'At least one email required'),
});

Alanları Değiştirme ve Taşıma

İki alanı yer değiştirmek için `swap(indexA, indexB)`, bir alanı yeniden konumlandırmak için `move(from, to)` kullanın. Bunlar sürükleyip bırakarak sıralanabilen alan listeleri oluşturmak için kullanılır.
swap(0, 2); // swap first and third items
move(3, 0); // move item at index 3 to the top

İç İçe useFieldArray

Çok düzeyli dinamik formlar için bir useFieldArray öğesini başka bir useFieldArray içine yerleştirebilirsiniz (örneğin, her birinde alt öğeler bulunan satır öğelerine sahip bir fatura).

Dizi Verilerini Gönderme

Gönderim sırasında handleSubmit, dizinin tamamını data nesnesinin bir parçası olarak iletir. Bu verilere data.phoneNumbers üzerinden erişebilirsiniz; bu, alan yapısıyla eşleşen nesnelerden oluşan bir dizidir.
const onSubmit = (data) => {
  console.log(data.phoneNumbers);
  // [{ value: '555-1234' }, { value: '555-5678' }]
};

Hızlı Kontrol

useFieldArray alanlarını oluştururken React anahtarı olarak neden dizi index değeri yerine field.id kullanmalısınız?

Özet

useFieldArray size bir fields dizisi ile append/remove/swap/move yöntemlerini sağlar. React anahtarı olarak field.id kullanın, 'fieldName.index.subfield' söz dizimiyle kayıt yapın ve dizileri Zod min/max ile doğrulayın.

Kurs Tamamlandı

Tebrikler! **React Hook Form ile Form Yönetimi** kursunu tamamladınız. Artık RHF ile yüksek performanslı formlar oluşturabilir, Zod schema doğrulaması uygulayabilir ve dinamik alan dizileri oluşturabilirsiniz.

Sıkça Sorulan Sorular

“useFieldArray ile Dinamik Alanlar” dersi ücretsiz mi?

Evet — “useFieldArray ile Dinamik Alanlar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.

“useFieldArray ile Dinamik Alanlar” dersinde ne öğreneceğim?

useFieldArray hook'unu kullanarak dinamik form alanları ekleyin, kaldırın ve yeniden sıralayın. React Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

React Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te React Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“useFieldArray ile Dinamik Alanlar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu React Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her React Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. React Hook Form'a Başlangıç
  2. Doğrulama Kuralları ve Hata Mesajları
  3. Zod ile Şema Doğrulama
  4. useFieldArray ile Dinamik Alanlar
← React Academy Sayfasına Dön