TypeScript Academy · Les

Typen voor App Router; server- versus clientcomponenten

Begrijp de standaardinstellingen van App Router (servercomponenten), wanneer u clientcomponenten moet gebruiken en hoe u route-handlers typeert.

Les 1 van 38 stappen

Typen voor App Router; server- versus clientcomponenten is een gratis TypeScript Academy-les op CoddyKit. Dit is les 1 van 3. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject TypeScript Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus TypeScript Academy bevat in totaal 3 lessen.

Inleiding

Doel: Gebruik App Router met vertrouwen in TypeScript. Je ziet servercomponenten (standaard), schakelt indien nodig clientcomponenten in en geeft routehandlers voor API-eindpunten typen.

  • Mogelijkheden van server tegenover client
  • Getypeerde props tussen beide doorgeven
  • Getypeerde NextRequest/NextResponse

Servercomponent

Bestanden onder app/ zijn standaard servercomponenten. Je kunt code uitvoeren die alleen op de server beschikbaar is en gegevens ophalen vóór het renderen.

// app/page.tsx (server component by default)
export default async function Page() {
  // Server code: read env, fetch data, call DB (conceptually)
  const data: { message: string } = { message: "Hello from server component" }
  return (
    <main style={{ display: "grid", gap: 8 }}>
      <h1>Home</h1>
      <p>{data.message}</p>
    </main>
  )
}

Clientcomponent

Voeg bovenaan de richtlijn "use client" toe om hooks en event-handlers in te schakelen. Clientcomponenten draaien in de browser.

"use client"

import { useState } from "react"

// app/components/Counter.tsx (client component)
export default function Counter() {
  const [n, setN] = useState(0)
  return (
    <div style={{ display: "flex", gap: 8, alignItems: "center" }}>
      <button onClick={() => setN(n - 1)}>-</button>
      <span>{n}</span>
      <button onClick={() => setN(n + 1)}>+</button>
    </div>
  )
}

Props van server naar client

Bereken gegevens op de server en geef ze als getypeerde props door aan clientcomponenten. Houd logica die alleen op de server hoort buiten de client.

// app/page.tsx (server) + client import
import Counter from "./components/Counter"

export default async function Page() {
  const initial = 5 // fetched or computed on the server
  return (
    <main style={{ display: "grid", gap: 12 }}>
      <h2>Dashboard</h2>
      <CounterWithStart start={initial} />
    </main>
  )
}

// app/components/CounterWithStart.tsx
"use client"
import { useState } from "react"

export default function CounterWithStart({ start }: { start: number }) {
  const [n, setN] = useState(start)
  return (
    <div style={{ display: "flex", gap: 8, alignItems: "center" }}>
      <button onClick={() => setN(n - 1)}>-</button>
      <span>{n}</span>
      <button onClick={() => setN(n + 1)}>+</button>
    </div>
  )
}

Routehandlers

Gebruik NextRequest/NextResponse voor getypeerde handlers onder app/api/*/route.ts. Retourneer JSON met statuscodes.

// app/api/hello/route.ts (App Router API)
import { NextRequest, NextResponse } from "next/server"

export async function GET(req: NextRequest) {
  const name = req.nextUrl.searchParams.get("name") ?? "world"
  const body: { message: string } = { message: `Hello, ${name}!` }
  return NextResponse.json(body, { status: 200 })
}

export async function POST(req: NextRequest) {
  const payload = (await req.json()) as { name?: string }
  const body = { created: true, name: payload.name ?? "anon" }
  return NextResponse.json(body, { status: 201 })
}

Tips

Tips:

  • Stel servercomponenten standaard in; kies alleen voor clientcomponenten wanneer je interactiviteit nodig hebt.
  • Houd props klein en serialiseerbaar tussen server en client.
  • Gebruik consequent vormen van NextResponse.json met typen.

Controle van client in App Router

Snelle controle: Hoe schakel je hooks in een componentbestand onder App Router in?

Samenvatting

Samenvatting: App Router gebruikt standaard servercomponenten; voeg "use client" toe voor interactiviteit, geef getypeerde props over de grens door en geef routehandlers typen met NextRequest/NextResponse.

Gratis beginnen

Leer TypeScript met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
101
Lessen
352

Veelgestelde vragen

Is de les “Typen voor App Router; server- versus clientcomponenten” gratis?

Ja — de volledige tekst van “Typen voor App Router; server- versus clientcomponenten” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus TypeScript Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus TypeScript Academy bevat in totaal 3 lessen.

Wat leer ik in “Typen voor App Router; server- versus clientcomponenten”?

Begrijp de standaardinstellingen van App Router (servercomponenten), wanneer u clientcomponenten moet gebruiken en hoe u route-handlers typeert. Je oefent met TypeScript Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met TypeScript Academy te beginnen?

Ervaring vooraf is niet nodig. TypeScript Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 3.

Hoe lang duurt de les “Typen voor App Router; server- versus clientcomponenten”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over TypeScript Academy?

Ja. Elke les over TypeScript Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Typen voor App Router; server- versus clientcomponenten
  2. Typering van data fetching en actions
  3. Typering van omgevingsvariabelen en configuratie
← Terug naar TypeScript Academy