spinny:~/writing $ less mastering-react-server-components.md
12React Server Components (RSC) hebben fundamenteel veranderd hoe we React-applicaties bouwen. Door rendering-logica naar de server te verplaatsen, kunnen we de JavaScript-bundel die naar de client wordt gestuurd aanzienlijk verkleinen, wat leidt tot snellere laadtijden en betere gebruikerservaringen. In dit artikel verkennen we geavanceerde patronen en best practices voor het benutten van RSC's in 2026.34## Wat zijn Server Components?56Traditioneel werden React-componenten volledig op de client gerenderd (CSR) of voorgerenderd op de server als HTML (SSR) en vervolgens gehydrateerd op de client. **Server Components** stellen ons in staat om componenten _uitsluitend_ op de server te renderen. Hun code wordt nooit naar de browser gestuurd.78### De Voordelen9101. **Nul Bundelgrootte**: Afhankelijkheden gebruikt in Server Components (zoals markdown-parsers of zware datumbibliotheken) blijven op de server.112. **Directe Backend Toegang**: Je kunt je database direct in je component opvragen zonder API-endpoints te ontsluiten.123. **Automatische Code Splitting**: Client-componenten die server-side worden geïmporteerd, worden automatisch gesplit.1314## Data Fetching Patroon1516Met RSC kun je je componenten `async` maken en data direct awaiten.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>Users</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 voor Streaming3940Omdat data fetching langzaam kan zijn, wikkel je componenten in `<Suspense>` om direct een fallback UI te tonen terwijl de data laadt.4142```tsx43import { Suspense } from 'react';44import UserList from './UserList';45import LoadingSkeleton from './LoadingSkeleton';4647export 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```5859## Server en Client Components Combineren6061Een van de meest verwarrende aspecten is hoe je Server en Client componenten combineert.6263**Vuistregel**: Server Components kunnen Client Components importeren. Client Components _kunnen_ Server Components niet direct importeren. Je kunt echter een Server Component als `children` doorgeven aan een Client Component.6465### Het "Children" Patroon6667```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 Count: {count}79 {children} {/* This can be a 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 /> {/* This works perfectly */}94 </ClientWrapper>95 );96}97```9899## Veelvoorkomende Valkuilen1001011. **Context gebruiken in Server Components**: Context is een client-side concept. Als je data server-side wilt delen, geef het door als props of gebruik een gespecialiseerde request-scope cache.1022. **Event Handlers toevoegen**: Je kunt geen `onClick` of `onChange` aan een Server Component toevoegen. Die logica hoort in een generiek Client Component leaf node.103104## Conclusie105106React Server Components zijn niet zomaar een functie; ze zijn een paradigmaverschuiving. Door de grens tussen server en client te begrijpen, kun je applicaties bouwen die zowel sterk interactief als ongelooflijk snel zijn.107
:React Server Components Beheersen in 2026lines 1-107 (END) — press q to close