Heim > Web-Frontend > js-Tutorial > Hauptteil

React Server-Komponenten verstehen: Ein praktischer Leitfaden

Barbara Streisand
Freigeben: 2024-10-17 18:46:02
Original
243 Leute haben es durchsucht

Understanding React Server Components: A Practical Guide

React Server Components (RSC) revolutionieren die Art und Weise, wie wir serverseitiges Rendering in React-Anwendungen angehen. In diesem Leitfaden erfahren Sie, was sie sind, welche Vorteile sie haben und wie Sie sie in Ihren Projekten umsetzen können.

Was sind React-Server-Komponenten?

React Server Components sind ein neuer Komponententyp, der ausschließlich auf dem Server läuft. Sie rendern auf dem Server und senden ihre Ausgabe an den Client, wodurch die Vorteile des serverseitigen Renderings mit der clientseitigen React-Interaktivität kombiniert werden.

Hauptmerkmale:

  • Serverseitige Ausführung
  • Direkter Zugriff auf Serverressourcen
  • Keine Erhöhung der clientseitigen Paketgröße
  • Kann keinen Status haben oder Nur-Browser-APIs verwenden

Vorteile von React Server-Komponenten

  1. Verbesserte Leistung: Schnellere Erstladevorgänge und kleinere Client-Bundles.
  2. Verbesserte SEO: Vom Server gerenderte Inhalte sind leichter indexierbar.
  3. Vereinfachter Datenabruf: Direkter Zugriff auf serverseitige Datenquellen.
  4. Verbesserte Sicherheit: Sensible Vorgänge bleiben auf dem Server.

Einrichten von React-Server-Komponenten

Ab 2024 werden React Server Components am besten mit Frameworks wie Next.js verwendet. Hier ist eine schnelle Einrichtung:

  1. Erstellen Sie ein neues Next.js-Projekt:
   npx create-next-app@latest my-rsc-app
   cd my-rsc-app
Nach dem Login kopieren
  1. Wählen Sie die Verwendung des App Routers, wenn Sie dazu aufgefordert werden.

  2. Erstellen Sie eine Serverkomponente in app/ServerComponent.tsx:

   async function getData() {
     const res = await fetch('https://api.example.com/data')
     return res.json()
   }

   export default async function ServerComponent() {
     const data = await getData()
     return <div>{data.message}</div>
   }
Nach dem Login kopieren
  1. Verwenden Sie es in app/page.tsx:
   import ServerComponent from './ServerComponent'

   export default function Home() {
     return (
       <main>
         <h1>Welcome to React Server Components</h1>
         <ServerComponent />
       </main>
     )
   }
Nach dem Login kopieren
  1. Führen Sie Ihre Anwendung aus:
   npm run dev
Nach dem Login kopieren

Implementieren von React Server-Komponenten

Lassen Sie uns ein komplexeres Beispiel erstellen – eine Blog-Beitragsliste, die Daten von einem CMS abruft:

// app/BlogList.tsx
import { getBlogPosts } from '../lib/cms'

export default async function BlogList() {
  const posts = await getBlogPosts()

  return (
    <ul>
      {posts.map(post => (
        <li key={post.id}>
          <h2>{post.title}</h2>
          <p>{post.excerpt}</p>
        </li>
      ))}
    </ul>
  )
}

// app/page.tsx
import BlogList from './BlogList'

export default function Home() {
  return (
    <main>
      <h1>Our Blog</h1>
      <BlogList />
    </main>
  )
}
Nach dem Login kopieren

In diesem Beispiel ruft BlogList Daten direkt vom CMS auf dem Server ab, wodurch die Leistung verbessert und der clientseitige Code vereinfacht wird.

Erweiterte Muster

1. Mischen von Server- und Client-Komponenten

// ClientComponent.tsx
'use client'

import { useState } from 'react'

export default function LikeButton() {
  const [likes, setLikes] = useState(0)
  return <button onClick={() => setLikes(likes + 1)}>Likes: {likes}</button>
}

// ServerComponent.tsx
import LikeButton from './ClientComponent'

export default function BlogPost({ content }) {
  return (
    <article>
      <p>{content}</p>
      <LikeButton />
    </article>
  )
}
Nach dem Login kopieren

2. Streaming für verbesserte UX

import { Suspense } from 'react'
import BlogList from './BlogList'

export default function Home() {
  return (
    <main>
      <h1>Our Blog</h1>
      <Suspense fallback={<p>Loading posts...</p>}>
        <BlogList />
      </Suspense>
    </main>
  )
}
Nach dem Login kopieren

3. Fehlerbehandlung

'use client'

export default function ErrorBoundary({ error, reset }) {
  return (
    <div>
      <h2>Something went wrong!</h2>
      <button onClick={reset}>Try again</button>
    </div>
  )
}

// In your page file
import ErrorBoundary from './ErrorBoundary'

export default function Page() {
  return (
    <ErrorBoundary>
      <BlogList />
    </ErrorBoundary>
  )
}
Nach dem Login kopieren

Abschluss

React Server Components bieten einen leistungsstarken Ansatz zum Erstellen leistungsstarker, SEO-freundlicher und sicherer Webanwendungen. Sie stellen eine spannende Richtung für die React-Entwicklung dar und ermöglichen das serverseitige Abrufen und Rendern von Daten bei gleichzeitiger Beibehaltung der Interaktivität von clientseitigem React.

Bedenken Sie beim Erkunden von Serverkomponenten, dass diese kein Ersatz für clientseitiges React sind, sondern eine ergänzende Technologie. Verwenden Sie sie dort, wo sie in Ihrer Anwendungsarchitektur sinnvoll sind.

Wir ermutigen Sie, in Ihren Projekten mit Serverkomponenten zu experimentieren und bleiben Sie gespannt auf weitere Entwicklungen in diesem spannenden Bereich!

Das obige ist der detaillierte Inhalt vonReact Server-Komponenten verstehen: Ein praktischer Leitfaden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!