useSearchParams
useSearchParams
ist ein Client Component Hook, der es ermöglicht, die Query-Parameter der aktuellen URL auszulesen.
useSearchParams
gibt eine schreibgeschützte Version der URLSearchParams
-Schnittstelle zurück.
Parameter
useSearchParams
benötigt keine Parameter.
Rückgabewert
useSearchParams
gibt eine schreibgeschützte Version der URLSearchParams
-Schnittstelle zurück, die Hilfsmethoden zum Auslesen der Query-Parameter der URL enthält:
-
URLSearchParams.get()
: Gibt den ersten Wert zurück, der mit dem Suchparameter verknüpft ist. Beispiel:URL searchParams.get("a")
/dashboard?a=1
'1'
/dashboard?a=
''
/dashboard?b=3
null
/dashboard?a=1&a=2
'1'
- verwendegetAll()
für alle Werte -
URLSearchParams.has()
: Gibt einen booleschen Wert zurück, der angibt, ob der gegebene Parameter existiert. Beispiel:URL searchParams.has("a")
/dashboard?a=1
true
/dashboard?b=3
false
-
Erfahre mehr über andere schreibgeschützte Methoden von
URLSearchParams
, einschließlichgetAll()
,keys()
,values()
,entries()
,forEach()
undtoString()
.
Wissenswert:
useSearchParams
ist ein Client Component-Hook und wird in Server Components nicht unterstützt, um veraltete Werte während des partiellen Renderings zu vermeiden.- Wenn eine Anwendung das
/pages
-Verzeichnis enthält, gibtuseSearchParams
ReadonlyURLSearchParams | null
zurück. Dernull
-Wert dient der Kompatibilität während der Migration, da Query-Parameter während des Pre-Renderings einer Seite, diegetServerSideProps
nicht verwendet, nicht bekannt sein können.
Verhalten
Statisches Rendering
Wenn eine Route statisch gerendert wird, führt der Aufruf von useSearchParams
dazu, dass der Client Component-Baum bis zur nächsten Suspense
-Grenze clientseitig gerendert wird.
Dies ermöglicht es, einen Teil der Route statisch zu rendern, während der dynamische Teil, der useSearchParams
verwendet, clientseitig gerendert wird.
Wir empfehlen, die Client Component, die useSearchParams
verwendet, in eine <Suspense/>
-Grenze zu wrappen. Dadurch können alle darüber liegenden Client Components statisch gerendert und als Teil des initialen HTML gesendet werden. Beispiel.
Beispiel:
Dynamisches Rendering
Wenn eine Route dynamisch gerendert wird, ist useSearchParams
auf dem Server während des initialen Server-Renderings der Client Component verfügbar.
Beispiel:
Wissenswert: Die Option
dynamic
route segment config kann aufforce-dynamic
gesetzt werden, um dynamisches Rendering zu erzwingen.
Server Components
Seiten
Um in Pages (Server Components) auf Query-Parameter zuzugreifen, verwende die searchParams
-Prop.
Layouts
Im Gegensatz zu Seiten erhalten Layouts (Server Components) keine searchParams
-Prop. Dies liegt daran, dass ein gemeinsames Layout während der Navigation nicht neu gerendert wird, was zu veralteten searchParams
zwischen Navigationen führen könnte. Siehe detaillierte Erklärung.
Verwende stattdessen die searchParams
-Prop der Page oder den useSearchParams
-Hook in einer Client Component, die auf dem Client mit den neuesten searchParams
neu gerendert wird.
Beispiele
Aktualisieren von searchParams
Du kannst useRouter
oder Link
verwenden, um neue searchParams
zu setzen. Nach einer Navigation erhält die aktuelle page.js
eine aktualisierte searchParams
-Prop.
Versionsverlauf
Version | Änderungen |
---|---|
v13.0.0 | useSearchParams eingeführt. |