useRouter
Der useRouter
-Hook ermöglicht es Ihnen, Routen programmatisch in Client Components zu ändern.
Empfehlung: Verwenden Sie die
<Link>
-Komponente für die Navigation, es sei denn, Sie haben einen spezifischen Grund,useRouter
zu verwenden.
useRouter()
router.push(href: string, { scroll: boolean })
: Führt eine clientseitige Navigation zur angegebenen Route durch. Fügt einen neuen Eintrag in den Browser-Verlauf ein.router.replace(href: string, { scroll: boolean })
: Führt eine clientseitige Navigation zur angegebenen Route durch, ohne einen neuen Eintrag in den Browser-Verlauf hinzuzufügen.router.refresh()
: Aktualisiert die aktuelle Route. Dabei wird eine neue Anfrage an den Server gesendet, Datenanfragen neu abgerufen und Server Components neu gerendert. Der Client führt die aktualisierte React Server Component-Nutzlast zusammen, ohne nicht betroffene clientseitige React-Zustände (z.B.useState
) oder Browser-Zustände (z.B. Scroll-Position) zu verlieren.router.prefetch(href: string)
: Prefetched die angegebene Route für schnellere clientseitige Übergänge.router.back()
: Navigiert zurück zur vorherigen Route im Browser-Verlauf.router.forward()
: Navigiert vorwärts zur nächsten Seite im Browser-Verlauf.
Wissenswert:
- Sie sollten keine nicht vertrauenswürdigen oder nicht bereinigten URLs an
router.push
oderrouter.replace
senden, da dies Ihre Seite für Cross-Site-Scripting (XSS)-Sicherheitslücken öffnen kann. Beispielsweise werdenjavascript:
-URLs, die anrouter.push
oderrouter.replace
gesendet werden, im Kontext Ihrer Seite ausgeführt.- Die
<Link>
-Komponente prefetcht Routen automatisch, sobald sie im Viewport sichtbar werden.refresh()
kann das gleiche Ergebnis erzeugen, wenn Fetch-Anfragen zwischengespeichert sind. Andere dynamische APIs wiecookies
undheaders
können ebenfalls die Antwort ändern.
Migration von next/router
- Der
useRouter
-Hook sollte ausnext/navigation
und nicht ausnext/router
importiert werden, wenn der App Router verwendet wird. - Die
pathname
-Zeichenkette wurde entfernt und durchusePathname()
ersetzt. - Das
query
-Objekt wurde entfernt und durchuseSearchParams()
ersetzt. router.events
wurde ersetzt. Siehe unten.
Vollständigen Migrationsleitfaden anzeigen.
Beispiele
Router-Ereignisse
Sie können Seitenänderungen abhören, indem Sie andere Client Component-Hooks wie usePathname
und useSearchParams
kombinieren.
Dies kann in ein Layout importiert werden.
Wissenswert:
<NavigationEvents>
ist in eineSuspense
-Boundary eingebettet, weiluseSearchParams()
während des statischen Renderings clientseitiges Rendering bis zur nächstenSuspense
-Boundary verursacht. Mehr erfahren.
Deaktivieren des Scrollens nach oben
Standardmäßig scrollt Next.js beim Navigieren zu einer neuen Route nach oben auf der Seite. Sie können dieses Verhalten deaktivieren, indem Sie scroll: false
an router.push()
oder router.replace()
übergeben.
Versionsverlauf
Version | Änderungen |
---|---|
v13.0.0 | useRouter aus next/navigation eingeführt. |