Seiten und Layouts
Der Pages Router basiert auf einem dateisystembasierten Routing-Konzept mit Seiten.
Wenn eine Datei zum pages
-Verzeichnis hinzugefügt wird, ist sie automatisch als Route verfügbar.
In Next.js ist eine Seite eine React-Komponente, die aus einer .js
-, .jsx
-, .ts
- oder .tsx
-Datei im pages
-Verzeichnis exportiert wird. Jede Seite ist mit einer Route verknüpft, die auf ihrem Dateinamen basiert.
Beispiel: Wenn Sie pages/about.js
erstellen, die eine React-Komponente wie unten exportiert, ist sie unter /about
erreichbar.
Index-Routen
Der Router leitet Dateien mit dem Namen index
automatisch zum Stammverzeichnis weiter.
pages/index.js
→/
pages/blog/index.js
→/blog
Verschachtelte Routen
Der Router unterstützt verschachtelte Dateien. Wenn Sie eine verschachtelte Ordnerstruktur erstellen, werden die Dateien weiterhin automatisch entsprechend geroutet.
pages/blog/first-post.js
→/blog/first-post
pages/dashboard/settings/username.js
→/dashboard/settings/username
Seiten mit dynamischen Routen
Next.js unterstützt Seiten mit dynamischen Routen. Wenn Sie beispielsweise eine Datei namens pages/posts/[id].js
erstellen, ist sie unter posts/1
, posts/2
usw. erreichbar.
Weitere Informationen zum dynamischen Routing finden Sie in der Dokumentation zu dynamischen Routen.
Layout-Muster
Das React-Modell ermöglicht es uns, eine Seite in eine Reihe von Komponenten zu zerlegen. Viele dieser Komponenten werden oft zwischen Seiten wiederverwendet. Beispielsweise könnten Sie auf jeder Seite dieselbe Navigationsleiste und Fußzeile haben.
Beispiele
Einzelnes gemeinsames Layout mit Custom App
Wenn Sie nur ein Layout für Ihre gesamte Anwendung haben, können Sie eine Custom App erstellen und Ihre Anwendung mit dem Layout umschließen. Da die <Layout />
-Komponente beim Wechsel der Seiten wiederverwendet wird, bleibt ihr Komponentenzustand erhalten (z. B. Eingabewerte).
Seiten-spezifische Layouts
Wenn Sie mehrere Layouts benötigen, können Sie eine Eigenschaft getLayout
zu Ihrer Seite hinzufügen, die es Ihnen ermöglicht, eine React-Komponente für das Layout zurückzugeben. Dies ermöglicht es Ihnen, das Layout auf einer pro-Seite-Basis zu definieren. Da wir eine Funktion zurückgeben, können wir bei Bedarf auch komplexe verschachtelte Layouts haben.
Beim Navigieren zwischen Seiten möchten wir den Seitenzustand (Eingabewerte, Scrollposition usw.) für eine Single-Page Application (SPA)-Erfahrung beibehalten.
Dieses Layout-Muster ermöglicht die Zustandserhaltung, da der React-Komponentenbaum zwischen Seitenübergängen erhalten bleibt. Mit dem Komponentenbaum kann React verstehen, welche Elemente sich geändert haben, um den Zustand zu erhalten.
Gut zu wissen: Dieser Prozess wird als Reconciliation bezeichnet und beschreibt, wie React erkennt, welche Elemente sich geändert haben.
Mit TypeScript
Bei der Verwendung von TypeScript müssen Sie zunächst einen neuen Typ für Ihre Seiten erstellen, der eine getLayout
-Funktion enthält. Anschließend müssen Sie einen neuen Typ für Ihre AppProps
erstellen, der die Component
-Eigenschaft überschreibt, um den zuvor erstellten Typ zu verwenden.
Datenabruf
Innerhalb Ihres Layouts können Sie Daten clientseitig mit useEffect
oder einer Bibliothek wie SWR abrufen. Da diese Datei keine Seite ist, können Sie derzeit nicht getStaticProps
oder getServerSideProps
verwenden.