Functions cannot be passed directly to Client Components unless you explicitly expose it by marking it with 'use server'.

En funktion skickas som prop från en server-komponent till en klientkomponent utan `'use server'`-markering.

Förklaring

Precis som med event-handlers kan vanliga JavaScript-funktioner inte skickas som props från server- till klientkomponenter. De kan inte serialiseras. Men om du vill skicka en server-funktion, till exempel en Server Action för att hantera formulärdata, måste den markeras med 'use server'.

Server Actions är funktioner som körs på servern men kan anropas från klienten. De är Next.js:s sätt att hantera form submissions och datamutationer utan att bygga ett eget API.

Det här felet uppstår när du försöker skicka en funktion som prop men glömmer att deklarera den som en Server Action.

Vanliga orsaker

En funktion skickas som prop utan 'use server'-deklaration. Vanligt vid implementering av formulär i App Router där åtgärden behöver köras på servern.

Lösning

Markera funktionen som en Server Action:

async function submitForm(formData) {
  'use server';
  await db.save(formData);
}

export default function Page() {
  return <Form action={submitForm} />;
}

Alternativt, samla alla Server Actions i en separat fil med 'use server' längst upp i filen.