React Academy · Lektion

Dynamiske felter med useFieldArray

Tilføj, fjern og omarrangér dynamiske formularfelter ved hjælp af useFieldArray-hooken.

Lektion 4 af 413 trin

Dynamiske felter med useFieldArray er en gratis React Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i React Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. React Academy-kurset indeholder 4 lektioner i alt.

Velkommen

I denne lektion skal du bruge React Hook Forms useFieldArray-hook til at bygge formularer med dynamiske lister af felter — f.eks. tilføje, fjerne og omarrangere elementer.

Hvad er useFieldArray?

useFieldArray håndterer et array af felter i en React Hook Form. Det tilbyder metoderne append, prepend, remove, swap, move og insert til at manipulere feltlisten.
import { useFieldArray } from 'react-hook-form';

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

Opsætning: control fra useForm

useFieldArray kræver `control`-objektet fra useForm. Destrukturér det sammen med register og handleSubmit.
const { register, control, handleSubmit } = useForm({
  defaultValues: { phoneNumbers: [{ value: '' }] },
});

Gengivelse af felterne

Gennemløb `fields` for at gengive hvert element. Brug feltets `id` som React-nøgle, ikke indekset. Registrér hvert felt med syntaksen for array-stier.
return fields.map((field, index) => (
  <div key={field.id}>
    <input
      {...register(`phoneNumbers.${index}.value`)}
    />
    <button onClick={() => remove(index)}>Remove</button>
  </div>
));

Tilføjelse af nye felter

Kald append() med et objekt med standardværdier for at tilføje et nyt felt sidst i listen. Formularen registrerer det automatisk.
<button onClick={() => append({ value: '' })}>
  Add Phone Number
</button>

Fjernelse af felter

Kald remove(index) for at slette et felt på en bestemt position. Alle efterfølgende felter rykkes ned, og deres registreringer opdateres automatisk.
<button onClick={() => remove(index)}>Delete</button>

Validering af minimum antal felter

Du kan validere arrayets længde i et Zod-skema med .min() for at sikre, at der findes mindst ét felt.
const schema = z.object({
  emails: z.array(z.object({ value: z.string().email() }))
           .min(1, 'At least one email required'),
});

Ombytning og flytning af felter

Brug `swap(indexA, indexB)` til at bytte to felter eller `move(from, to)` til at flytte et felt. Det bruges til at bygge sorterbare feltlister med træk og slip.
swap(0, 2); // swap first and third items
move(3, 0); // move item at index 3 to the top

Indlejret useFieldArray

Du kan indlejre useFieldArray i et andet useFieldArray for at lave dynamiske formularer på flere niveauer, f.eks. en faktura med linjeposter, der hver har underposter.

Indsendelse af arraydata

Ved indsendelse sender handleSubmit hele arrayet som en del af dataobjektet. Du kan tilgå det via data.phoneNumbers — et array af objekter, der matcher feltstrukturen.
const onSubmit = (data) => {
  console.log(data.phoneNumbers);
  // [{ value: '555-1234' }, { value: '555-5678' }]
};

Hurtigt tjek

Hvorfor skal du bruge field.id, ikke arrayindekset, som React-nøgle, når du gengiver useFieldArray-felter?

Opsummering

useFieldArray giver dig et fields-array samt append/remove/swap/move-metoder. Brug field.id som React-nøgle, registrér med syntaksen 'fieldName.index.subfield', og valider arrays med Zod min/max.

Kurset er gennemført

Tillykke! Du har gennemført **Håndtering af formularer med React Hook Form**. Nu kan du bygge effektive formularer med RHF, anvende Zod-skemaer til validering og oprette dynamiske feltarrays.
Gratis at komme i gang

Lær React med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
88
Lektioner
324

Ofte stillede spørgsmål

Er lektionen “Dynamiske felter med useFieldArray” gratis?

Ja — hele teksten til “Dynamiske felter med useFieldArray” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af React Academy-kurset, skal du opgradere til CoddyKit PRO. React Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Dynamiske felter med useFieldArray”?

Tilføj, fjern og omarrangér dynamiske formularfelter ved hjælp af useFieldArray-hooken. Du øver dig i React Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på React Academy?

Der kræves ingen tidligere erfaring. React Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “Dynamiske felter med useFieldArray”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne React Academy-lektion?

Ja. Alle React Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Kom godt i gang med React Hook Form
  2. Valideringsregler og fejlmeddelelser
  3. Skemavalidering med Zod
  4. Dynamiske felter med useFieldArray
← Tilbage til React Academy