Datenkomponenten

<List>, <Table> und <Tree>: virtualisiert, sortierbar und auswählbar.

<List>, <Table> und <Tree> zeigen große Datensätze an. Nur sichtbare Zeilen werden gerendert.

Live72×13 · booting Turbolog…tsx
preview://table:1
<Table  columns={[    { key: "name", header: "Service" },    { key: "region", header: "Region", width: 8 },    { key: "p95", header: "p95", width: 7, align: "right" },  ]}  rows={services}  sortable  selectionMode="multiple"  onSelect={(s) => router.push(`/services/${s.name}`)}/>

<List>, <Table> und <Tree> verwenden dieselbe Tastatursteuerung.

TastenAktion
↑ ↓ / j kBewegen
PgUp PgDn, Ctrl+U Ctrl+DGanze Seite, halbe Seite
Home End / g GErste, letzte Zeile
↵onSelect
MausradCursor bewegen

Standardmäßig füllen sie ihr Elternelement aus. Übergib height für eine feste Anzahl von Zeilen.

<List>

Eine virtualisierte Liste. Jede Zeile ist eine Zelle hoch.

<List  items={requests}  getLabel={(r) => `${r.method} ${r.path}`}  onSelect={open}/>
PropBeschreibung
itemsBeliebiges Array
renderItem(item, { highlighted, focused }) => ReactNode
isItemDisabledVom Cursor übersprungen
heightSichtbare Zeilen (Standard: ausfüllen)
highlightedIndex / onHighlightGesteuerter Cursor
vimKeysj k g G (Standard: true)

<Table>

Spalten teilen sich die verbleibende Breite, sofern sie kein width festlegen. Kopfzeilen und Zellen verwenden dieselben Flex-Regeln und bleiben so immer bündig.

SpaltenfeldBeschreibung
keyID und Standardzugriff
width / growFeste Zellenanzahl oder Anteil am Rest
alignleft right center
valueAnzeige- und Sortierwert
renderBenutzerdefinierter Zelleninhalt
compareBenutzerdefinierte Sortierung

Sortierung

Drücke bei aktiviertem sortable die Nummer einer Spalte, um danach zu sortieren (erneut drücken kehrt die Richtung um), s zum Wechseln der Spalte und S zum Umkehren der Richtung. Die Sortierung ist stabil. Steuere sie mit sort und onSortChange.

Auswahl

selectionMode="multiple" fügt eine Spalte mit Kontrollkästchen hinzu; Space schaltet die Auswahl der hervorgehobenen Zeile um. Verwende selectedKeys und onSelectionChange, um die Auswahl zu steuern, und getRowKey für stabile Schlüssel.

<Tree>

Ein aufklappbarer Baum mit Führungslinien.

Live56×11 · booting Turbolog…tsx
preview://tree:1
<Tree  data={[{ id: "app", label: "app", children: [{ id: "page", label: "page.tsx", hint: "2.8 kB" }] }]}  defaultExpanded={["app"]}  onSelect={(node) => open(node.id)}/>

→ klappt einen Zweig auf oder wechselt hinein. ← klappt ihn zu oder springt zum übergeordneten Knoten. Space schaltet zwischen auf- und zugeklappt um. flattenTree(data, expanded) stellt die sichtbaren Zeilen bereit, falls du einen eigenen Renderer brauchst.

Diese Seite auf GitHub bearbeiten