spinny:~/writing $ less mastering-react-server-components.md
12React Server Components (RSC) har fundamentalt ændret, hvordan vi bygger React-applikationer. Ved at flytte renderingslogik til serveren kan vi markant reducere JavaScript-bundlet, der sendes til klienten, hvilket fører til hurtigere indlæsningstider og bedre brugeroplevelser. I denne artikel udforsker vi avancerede mønstre og bedste praksis for at udnytte RSC i 2026.34## Hvad er Server Components?56Traditionelt blev React-komponenter renderet helt på klienten (CSR) eller forud-renderet på serveren som HTML (SSR) og derefter hydreret på klienten. **Server Components** giver os mulighed for at rendere komponenter _udelukkende_ på serveren. Deres kode sendes aldrig til browseren.78### Fordelene9101. **Nul bundle-størrelse**: Afhængigheder, der bruges i Server Components (som markdown-parsere eller tunge dato-biblioteker), forbliver på serveren.112. **Direkte backend-adgang**: Du kan forespørge din database direkte inde i din komponent uden at eksponere API-endpoints.123. **Automatisk kodesplitning**: Klientkomponenter, der importeres serverside, splittes automatisk i separate bundles.1314## Datahentnings-mønster1516Med RSC kan du gøre dine komponenter `async` og afvente data direkte.1718```tsx19// app/users/page.tsx20import { db } from '@/lib/db';2122export default async function UsersPage() {23 const users = await db.user.findMany();2425 return (26 <main>27 <h1>Brugere</h1>28 <ul>29 {users.map((user) => (30 <li key={user.id}>{user.name}</li>31 ))}32 </ul>33 </main>34 );35}36```3738### Suspense til streaming3940Da datahentning kan være langsom, kan du omslutte dine komponenter i `<Suspense>` for at vise en fallback-UI med det samme, mens data indlæses.4142```tsx43import { Suspense } from 'react';44import UserList from './UserList';45import LoadingSkeleton from './LoadingSkeleton';4647export default function Page() {48 return (49 <section>50 <h1>Mine brugere</h1>51 <Suspense fallback={<LoadingSkeleton />}>52 <UserList />53 </Suspense>54 </section>55 );56}57```5859## Blanding af Server- og Klientkomponenter6061Et af de mest forvirrende aspekter er, hvordan man kombinerer Server- og Klientkomponenter.6263**Tommelfingerregel**: Server Components kan importere Client Components. Client Components _kan ikke_ importere Server Components direkte. Du kan dog sende en Server Component som `children` til en Client Component.6465### "Children"-mønsteret6667```tsx68// ClientComponent.tsx69'use client';7071import { useState } from 'react';7273export default function ClientWrapper({ children }) {74 const [count, setCount] = useState(0);7576 return (77 <div onClick={() => setCount((c) => c + 1)}>78 Antal: {count}79 {children} {/* Dette kan være en Server Component! */}80 </div>81 );82}83```8485```tsx86// ServerPage.tsx87import ClientWrapper from './ClientWrapper';88import ServerContent from './ServerContent';8990export default function Page() {91 return (92 <ClientWrapper>93 <ServerContent /> {/* Dette fungerer perfekt */}94 </ClientWrapper>95 );96}97```9899## Almindelige faldgruber1001011. **Brug af Context i Server Components**: Context er et klientside-koncept. Hvis du har brug for at dele data serverside, skal du sende det som props eller bruge en specialiseret request-scope cache.1022. **Tilføjelse af event handlers**: Du kan ikke tilføje `onClick` eller `onChange` til en Server Component. Den logik hører til i en generisk Client Component-bladknude.103104## Konklusion105106React Server Components er ikke bare en funktion; de er et paradigmeskift. Ved at forstå grænsen mellem server og klient kan du bygge applikationer, der er både yderst interaktive og utroligt hurtige.107
:Mestring af React Server Components i 2026lines 1-107 (END) — press q to close