<Form>
Die <Form>
-Komponente erweitert das HTML-<form>
-Element, um Client-seitige Navigation bei der Übermittlung und progressiven Enhancement bereitzustellen.
Sie ist nützlich für Formulare, die URL-Suchparameter aktualisieren, da sie den Boilerplate-Code reduziert, der benötigt wird, um die oben genannten Funktionen zu erreichen.
Grundlegende Verwendung:
Referenz
Das Verhalten der <Form>
-Komponente hängt davon ab, ob der action
-Prop eine string
oder function
übergeben wird.
- Wenn
action
eine Zeichenkette ist, verhält sich die<Form>
wie ein natives HTML-Formular, das eineGET
-Methode verwendet. Die Formulardaten werden als Suchparameter in die URL codiert, und bei der Übermittlung wird zur angegebenen URL navigiert. Zusätzlich führt Next.js Folgendes aus:- Führt eine Client-seitige Navigation anstelle eines vollständigen Seitenneulades durch, wenn das Formular übermittelt wird. Dabei bleibt die gemeinsame Benutzeroberfläche und der Client-seitige Zustand erhalten.
action
(Zeichenkette) Props
Wenn action
eine Zeichenkette ist, unterstützt die <Form>
-Komponente die folgenden Props:
Prop | Beispiel | Typ | Erforderlich |
---|---|---|---|
action | action="/search" | string (URL oder relativer Pfad) | Ja |
replace | replace={false} | boolean | - |
scroll | scroll={true} | boolean | - |
action
: Die URL oder der Pfad, zu dem bei der Formularübermittlung navigiert wird.- Eine leere Zeichenkette
""
navigiert zur gleichen Route mit aktualisierten Suchparametern.
- Eine leere Zeichenkette
replace
: Ersetzt den aktuellen Historienzustand, anstatt einen neuen zum Browser-Verlaufsstapel hinzuzufügen. Standard istfalse
.scroll
: Steuert das Scroll-Verhalten während der Navigation. Standard isttrue
, was bedeutet, dass zur Spitze der neuen Route gescrollt wird und die Scroll-Position für Rückwärts- und Vorwärtsnavigation beibehalten wird.
Einschränkungen
onSubmit
: Kann verwendet werden, um die Logik zur Formulareinreichung zu handhaben. Wenn jedochevent.preventDefault()
aufgerufen wird, überschreibt dies das Verhalten von<Form>
, wie z.B. das Navigieren zur angegebenen URL.method
,encType
,target
: Werden nicht unterstützt, da sie das Verhalten von<Form>
überschreiben.- Entsprechend können
formMethod
,formEncType
undformTarget
verwendet werden, um die Eigenschaftenmethod
,encType
undtarget
zu überschreiben. Die Verwendung dieser Eigenschaften greift auf das native Browserverhalten zurück. - Wenn Sie diese Eigenschaften verwenden müssen, nutzen Sie stattdessen das HTML-Element
<form>
.
- Entsprechend können
<input type="file">
: Bei Verwendung dieses Eingabetyps, wennaction
eine Zeichenfolge ist, entspricht das Verhalten dem des Browsers, indem der Dateiname anstelle des Dateiobjekts übermittelt wird.