<Link>
<Link>
ist eine React-Komponente, die das HTML-Element <a>
erweitert, um Prefetching und clientseitige Navigation zwischen Routen zu ermöglichen. Es ist der primäre Weg, um zwischen Routen in Next.js zu navigieren.
Grundlegende Verwendung:
Referenz
Der <Link>
-Komponente können folgende Props übergeben werden:
Prop | Beispiel | Typ | Erforderlich |
---|---|---|---|
href | href="/dashboard" | String oder Objekt | Ja |
replace | replace={false} | Boolean | - |
scroll | scroll={false} | Boolean | - |
prefetch | prefetch={false} | Boolean oder null | - |
Hinweis:
<a>
-Tag-Attribute wieclassName
odertarget="_blank"
können<Link>
als Props hinzugefügt werden und werden an das zugrunde liegende<a>
-Element weitergegeben.
href
(erforderlich)
Der Pfad oder die URL, zu der navigiert werden soll.
replace
Standardmäßig false
. Wenn true
, ersetzt next/link
den aktuellen Verlaufszustand, anstatt eine neue URL in den Browsing-Verlauf hinzuzufügen.
scroll
Standardmäßig true
. Das standardmäßige Scroll-Verhalten von <Link>
in Next.js ist die Beibehaltung der Scroll-Position, ähnlich wie Browser Back- und Forward-Navigation handhaben. Beim Navigieren zu einer neuen Seite bleibt die Scroll-Position gleich, solange die Seite im Viewport sichtbar ist. Wenn die Seite jedoch nicht im Viewport sichtbar ist, scrollt Next.js zum Anfang des ersten Seitenelements.
Wenn scroll = {false}
, wird Next.js nicht versuchen, zum ersten Seitenelement zu scrollen.
prefetch
Prefetching passiert, wenn eine <Link />
-Komponente in den Viewport des Benutzers eintritt (initial oder durch Scrollen). Next.js prefetcht und lädt die verlinkte Route (gekennzeichnet durch href
) und ihre Daten im Hintergrund, um die Performance von clientseitigen Navigationen zu verbessern. Wenn die geprefetchten Daten abgelaufen sind, wenn der Benutzer mit der Maus über einen <Link />
fährt, versucht Next.js, sie erneut zu prefetchen. Prefetching ist nur in der Produktionsumgebung aktiviert.
Der prefetch
Prop können folgende Werte übergeben werden:
null
(Standard): Das Prefetching-Verhalten hängt davon ab, ob die Route statisch oder dynamisch ist. Bei statischen Routen wird die gesamte Route geprefetcht (einschließlich aller Daten). Bei dynamischen Routen wird der Teilpfad bis zur nächstgelegenen Segmentgrenze mit einerloading.js
-Begrenzung geprefetcht.true
: Die gesamte Route wird für statische und dynamische Routen geprefetcht.false
: Prefetching wird weder beim Betreten des Viewports noch beim Hovern durchgeführt.
Beispiele
Die folgenden Beispiele zeigen, wie die <Link>
-Komponente in verschiedenen Szenarien verwendet wird.
Mit dynamischen Segmenten verlinken
Beim Verlinken auf dynamische Segmente können Sie Template-Literale und Interpolation verwenden, um eine Liste von Links zu generieren. Zum Beispiel, um eine Liste von Blog-Beiträgen zu generieren:
Aktive Links überprüfen
Sie können usePathname()
verwenden, um zu bestimmen, ob ein Link aktiv ist. Zum Beispiel, um einem aktiven Link eine Klasse hinzuzufügen, können Sie überprüfen, ob der aktuelle pathname
mit dem href
des Links übereinstimmt:
Zu einer id
scrollen
Wenn Sie beim Navigieren zu einer bestimmten id
scrollen möchten, können Sie Ihre URL mit einem #
Hash-Link anhängen oder einfach einen Hash-Link an die href
-Eigenschaft übergeben. Dies ist möglich, da <Link>
zu einem <a>
-Element rendert.
Hinweis:
- Next.js scrollt zur Seite, wenn sie beim Navigieren nicht im Viewport sichtbar ist.
Mit dynamischen Routensegmenten verlinken
Für dynamische Routensegmente kann es nützlich sein, Template-Literale zu verwenden, um den Pfad des Links zu erstellen.
Zum Beispiel können Sie eine Liste von Links zur dynamischen Route app/blog/[slug]/page.js
generieren:
Wenn das Kind eine benutzerdefinierte Komponente ist, die ein <a>
-Tag umschließt
Wenn das Kind von Link
eine benutzerdefinierte Komponente ist, die ein <a>
-Tag umschließt, müssen Sie passHref
zu Link
hinzufügen. Dies ist notwendig, wenn Sie Bibliotheken wie styled-components verwenden. Ohne dies wird dem <a>
-Tag das href
-Attribut fehlen, was die Zugänglichkeit Ihrer Website beeinträchtigt und die SEO beeinflussen kann. Wenn Sie ESLint verwenden, gibt es eine integrierte Regel next/link-passhref
, um die korrekte Verwendung von passHref
sicherzustellen.
- Bei Verwendung von emotion's JSX-Pragma-Funktion (
@jsx jsx
) müssen SiepassHref
verwenden, selbst wenn Sie ein<a>
-Tag direkt verwenden. - Die Komponente sollte die
onClick
-Eigenschaft unterstützen, um die Navigation korrekt auszulösen.
Verschachtelung einer Funktionskomponente
Wenn das Kind von Link
eine Funktionskomponente ist, müssen Sie zusätzlich zur Verwendung von passHref
und legacyBehavior
die Komponente in React.forwardRef
einwickeln:
Die URL ersetzen statt einen neuen Eintrag hinzuzufügen
Das Standardverhalten der Link
-Komponente besteht darin, eine neue URL in den history
-Stack zu pushen
. Sie können die replace
-Eigenschaft verwenden, um das Hinzufügen eines neuen Eintrags zu verhindern, wie im folgenden Beispiel:
Scrollen zur Seitenspitze deaktivieren
Das Standardscroll-Verhalten von <Link>
in Next.js behält die Scroll-Position bei, ähnlich wie Browser die Navigation vor und zurück handhaben. Wenn Sie zu einer neuen Seite navigieren, bleibt die Scroll-Position gleich, solange die Seite im Viewport sichtbar ist.
Wenn die Seite jedoch nicht im Viewport sichtbar ist, scrollt Next.js zum Anfang des ersten Seitenelements. Wenn Sie dieses Verhalten deaktivieren möchten, können Sie scroll={false}
an die <Link>
Komponente übergeben oder scroll: false
an router.push()
oder router.replace()
.
Verwendung von router.push()
oder router.replace()
:
Links in Middleware vorprefetchen
Es ist üblich, Middleware für Authentifizierung oder andere Zwecke zu verwenden, bei denen der Benutzer auf eine andere Seite umgeleitet wird. Damit die <Link />
-Komponente Links mit Rewrites über Middleware korrekt vorprefetchen kann, müssen Sie Next.js sowohl die anzuzeigende URL als auch die vorzupfetchende URL mitteilen. Dies ist erforderlich, um unnötige Anfragen an die Middleware zu vermeiden, um die korrekte Route zum Vorprefetchen zu ermitteln.
Wenn Sie beispielsweise eine /dashboard
-Route mit authentifizierten und Besucher-Ansichten bereitstellen möchten, können Sie Folgendes in Ihrer Middleware hinzufügen, um den Benutzer zur richtigen Seite weiterzuleiten:
In diesem Fall würden Sie den folgenden Code in Ihrer <Link />
-Komponente verwenden:
Versionshistorie
Version | Änderungen |
---|---|
v13.0.0 | Erfordert keine <a> -Unterkomponente mehr. Ein Codemod ist verfügbar, um Ihre Codebasis zu aktualisieren. |
v10.0.0 | href -Props, die auf eine dynamische Route zeigen, werden automatisch aufgelöst und benötigen keine as -Prop mehr. |
v8.0.0 | Verbesserte Prefetching-Leistung. |
v1.0.0 | next/link eingeführt. |