Verwendung von CSS-in-JS-Bibliotheken
Warnung: Die Verwendung von CSS-in-JS mit neueren React-Funktionen wie Server Components und Streaming erfordert, dass Bibliotheksautoren die neueste Version von React unterstützen, einschließlich Concurrent Rendering.
Die folgenden Bibliotheken werden in Client Components im app
-Verzeichnis unterstützt (alphabetisch):
ant-design
chakra-ui
@fluentui/react-components
kuma-ui
@mui/material
@mui/joy
pandacss
styled-jsx
styled-components
stylex
tamagui
tss-react
vanilla-extract
Die folgenden Bibliotheken arbeiten derzeit an der Unterstützung:
Gut zu wissen: Wir testen verschiedene CSS-in-JS-Bibliotheken und werden weitere Beispiele für Bibliotheken hinzufügen, die React 18-Funktionen und/oder das
app
-Verzeichnis unterstützen.
Konfiguration von CSS-in-JS in app
Die Konfiguration von CSS-in-JS ist ein dreistufiger Opt-in-Prozess, der Folgendes umfasst:
- Ein Style-Registry, um alle CSS-Regeln während eines Renders zu sammeln.
- Den neuen
useServerInsertedHTML
-Hook, um Regeln vor jeglichem Inhalt einzufügen, der sie verwenden könnte. - Eine Client Component, die Ihre App während des initialen Server-Side Renderings mit der Style-Registry umschließt.
styled-jsx
Die Verwendung von styled-jsx
in Client Components erfordert Version v5.1.0
. Erstellen Sie zunächst eine neue Registry:
Dann umschließen Sie Ihr Root Layout mit der Registry:
Styled Components
Nachfolgend ein Beispiel für die Konfiguration von styled-components@6
oder neuer:
Aktivieren Sie zunächst styled-components in next.config.js
.
Verwenden Sie dann die styled-components
-API, um eine globale Registry-Komponente zu erstellen, die alle während eines Renders generierten CSS-Styles sammelt, sowie eine Funktion, die diese Regeln zurückgibt. Verwenden Sie den useServerInsertedHTML
-Hook, um die in der Registry gesammelten Styles in das <head>
-HTML-Tag des Root Layouts einzufügen.
Umschließen Sie die children
des Root Layouts mit der Style-Registry-Komponente:
Gut zu wissen:
- Während des Server-Renderings werden Styles in eine globale Registry extrahiert und in den
<head>
Ihres HTML eingefügt. Dadurch wird sichergestellt, dass die Style-Regeln vor jeglichem Inhalt platziert werden, der sie verwenden könnte. In Zukunft könnten wir eine kommende React-Funktion verwenden, um festzulegen, wo die Styles eingefügt werden sollen.- Beim Streaming werden Styles aus jedem Chunk gesammelt und an vorhandene Styles angehängt. Nachdem das Client-Side Hydration abgeschlossen ist, übernimmt
styled-components
wie gewohnt und fügt weitere dynamische Styles ein.- Wir verwenden speziell eine Client Component auf der obersten Ebene des Baums für die Style-Registry, da dies die effizienteste Methode zum Extrahieren von CSS-Regeln ist. Es vermeidet die Neugenerierung von Styles bei nachfolgenden Server-Rendern und verhindert, dass sie im Server Component Payload gesendet werden.
- Für fortgeschrittene Anwendungsfälle, in denen Sie einzelne Eigenschaften der styled-components-Kompilierung konfigurieren müssen, können Sie unsere Next.js styled-components API-Referenz lesen, um mehr zu erfahren.