spinny:~/writing $ vim mastering-react-server-components.md
1~2React Server Components (RSC) har fundamentalt förändrat hur vi bygger React-applikationer. Genom att flytta renderingslogik till servern kan vi avsevärt minska JavaScript-bundlen som skickas till klienten, vilket leder till snabbare laddningstider och bättre användarupplevelser. I den här artikeln utforskar vi avancerade mönster och bästa praxis för att utnyttja RSC:er 2026.3~4## Vad är Server Components?5~6Traditionellt renderades React-komponenter helt på klienten (CSR) eller förrenderades på servern som HTML (SSR) och hydrerades sedan på klienten. **Server Components** låter oss rendera komponenter _uteslutande_ på servern. Deras kod skickas aldrig till webbläsaren.7~8### Fördelarna9~101. **Noll bundelstorlek**: Beroenden som används i Server Components (som markdown-parsrar eller tunga datumbibliotek) stannar på servern.112. **Direkt backendåtkomst**: Du kan fråga din databas direkt i din komponent utan att exponera API-endpoints.123. **Automatisk kodsplittning**: Klientkomponenter som importeras serversides kodsplittas automatiskt.13~14## Datahämtningsmönster15~16Med RSC kan du göra dina komponenter `async` och awaita data direkt.17~18```tsx19// app/users/page.tsx20import { db } from '@/lib/db';21~22export default async function UsersPage() {23 const users = await db.user.findMany();24~25 return (26 <main>27 <h1>Users</h1>28 <ul>29 {users.map((user) => (30 <li key={user.id}>{user.name}</li>31 ))}32 </ul>33 </main>34 );35}36```37~38### Suspense för Streaming39~40Eftersom datahämtning kan vara långsam, wrappa dina komponenter i `<Suspense>` för att visa ett fallback-UI direkt medan data laddas.41~42```tsx43import { Suspense } from 'react';44import UserList from './UserList';45import LoadingSkeleton from './LoadingSkeleton';46~47export default function Page() {48 return (49 <section>50 <h1>My Users</h1>51 <Suspense fallback={<LoadingSkeleton />}>52 <UserList />53 </Suspense>54 </section>55 );56}57```58~59## Kombinera Server- och Klientkomponenter60~61**Tumregel**: Server Components kan importera Client Components. Client Components _kan inte_ importera Server Components direkt. Men du kan skicka en Server Component som `children` till en Client Component.62~63### "Children"-mönstret64~65```tsx66// ClientComponent.tsx67'use client';68~69import { useState } from 'react';70~71export default function ClientWrapper({ children }) {72 const [count, setCount] = useState(0);73~74 return (75 <div onClick={() => setCount((c) => c + 1)}>76 Count: {count}77 {children} {/* This can be a Server Component! */}78 </div>79 );80}81```82~83```tsx84// ServerPage.tsx85import ClientWrapper from './ClientWrapper';86import ServerContent from './ServerContent';87~88export default function Page() {89 return (90 <ClientWrapper>91 <ServerContent /> {/* This works perfectly */}92 </ClientWrapper>93 );94}95```96~97## Vanliga Fallgropar98~991. **Använda Context i Server Components**: Context är ett klientsidigt koncept.1002. **Lägga till Event Handlers**: Du kan inte lägga till `onClick` eller `onChange` på en Server Component.101~102## Slutsats103~104React Server Components är inte bara en funktion; de är ett paradigmskifte. Genom att förstå gränsen mellan server och klient kan du bygga applikationer som är både mycket interaktiva och otroligt snabba.105~
NORMAL · mastering-react-server-components.md [readonly]105 lines · :q to close