useSearchParams
useSearchParams
ist ein Client Component-Hook, mit dem die Query-Parameter der aktuellen URL ausgelesen werden können.
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 Lesen der Query-Parameter der URL enthält:
-
URLSearchParams.get()
: Gibt den ersten Wert zurück, der mit dem Suchparameter verbunden ist. Zum 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 anzeigt, ob der angegebene Parameter existiert. Zum 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()
.
Hinweis:
useSearchParams
ist ein Client Component-Hook und wird in Server Components nicht unterstützt, um veraltete Werte während des teilweisen Renderns zu verhindern.- Wenn eine Anwendung das
/pages
-Verzeichnis enthält, gibtuseSearchParams
ReadonlyURLSearchParams | null
zurück. Dernull
-Wert dient der Kompatibilität während der Migration, da Suchparameter während des Pre-Renderings einer Seite, die keingetServerSideProps
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 einzuwickeln. Dies ermöglicht es, dass alle darüber liegenden Client Components statisch gerendert und als Teil des initialen HTMLs gesendet werden. Beispiel.
Zum Beispiel:
Dynamisches Rendering
Wenn eine Route dynamisch gerendert wird, ist useSearchParams
während des initialen Server-Renderings der Client Component auf dem Server verfügbar.
Zum Beispiel:
Hinweis: Das Setzen der
dynamic
-Route-Segment-Konfigurationsoption aufforce-dynamic
kann verwendet werden, um dynamisches Rendering zu erzwingen.
Server Components
Pages
Um auf Suchparameter in Pages (Server Components) zuzugreifen, verwende die searchParams
-Prop.
Layouts
Im Gegensatz zu Pages erhalten Layouts (Server Components) nicht die searchParams
-Prop. Dies liegt daran, dass ein gemeinsam genutztes 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 Page-searchParams
-Prop oder den useSearchParams
-Hook in einer Client Component, die auf dem Client mit den aktuellen 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.
Versionshistorie
Version | Änderungen |
---|---|
v13.0.0 | useSearchParams eingeführt. |