React Academy · leksjon

Definere kolonner og gjengi rader

Konfigurer kolonnedefinisjoner med accessors, overskrifter og cell-renderere for å vise dataene Deres.

Leksjon 2 av 413 trinn

Definere kolonner og gjengi rader er en gratis leksjon i React Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i React Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i React Academy inneholder totalt 4 leksjoner.

ColumnDef-typen

Hver kolonne i TanStack Table beskrives av et ColumnDef-objekt. De to viktigste feltene er accessorKey (egenskapsnavnet i dataobjektet) og header (kolonneetiketten som tekststreng eller renderingsfunksjon).

accessorKey-tilnærmingen er ideell for flate data, mens komplekse eller beregnede verdier krever accessorFn.

accessorKey kontra accessorFn

Når dataene Deres har en direkte egenskap som name eller email, bruker De accessorKey: 'name'. Når De må beregne en verdi, for eksempel ved å kombinere firstName og lastName, bruker De accessorFn: row => row.firstName + ' ' + row.lastName.

Begge blir fullt typet når De oppgir row-dataets generic til ColumnDef.

Egendefinert cell-rendering med cell

cell-feltet i en ColumnDef tar imot en funksjon som mottar cellekonteksten og returnerer JSX. Slik gjengir De badges, knapper, bilder eller et hvilket som helst annet egendefinert brukergrensesnitt i en celle.

For rene tekstverdier er cell.renderValue() tilstrekkelig. For alt som er mer omfattende, kan De destrukturere info fra cell.getContext().

Bygge kolonnematrisen

Definer kolonnematrisen utenfor komponenten for å unngå å opprette den på nytt ved hver rendering. Send matrisen til useReactTable sammen med data og getCoreRowModel.

TypeScript deduserer kolonnetypene når De angir ColumnDef med datatypen Deres, og gir Dem autofullføring for accessorKey-verdier.

Forklaring av getCoreRowModel

getCoreRowModel er en fabrikkfunksjon som importeres fra @tanstack/react-table. De sender returverdien til useReactTable for å fortelle instansen hvordan den skal bygge den grunnleggende listen med rader fra datamatrisen.

Ytterligere radmodeller (sorterte, filtrerte og paginerte) legges oppå ved å sende inn flere modellfabrikker.

Gjengi thead med getHeaderGroups

Kall table.getHeaderGroups() og map over resultatet for å gjengi thead. Hver header-gruppe har en headers-array, og hver header har en kolonnedefinisjon og en id.

Bruk flexRender(header.column.columnDef.header, header.getContext()) for å gjengi innholdet i overskriften, enten det er en tekststreng eller en funksjon som returnerer JSX.

Gjengi tbody med getRowModel

Kall table.getRowModel().rows og map hver rad til et tr-element. Inni den kaller De row.getVisibleCells() og mapper hver celle til en td.

Bruk flexRender(cell.column.columnDef.cell, cell.getContext()) for å gjengi celleinnholdet, samtidig som en eventuell egendefinert cell-renderer som er definert i kolonnen, respekteres.

Hjelpefunksjonen flexRender

flexRender er en hjelpefunksjon som tar imot enten en React-komponent, en funksjon som returnerer JSX eller en vanlig verdi, og gjengir den på en ensartet måte. Den gjør det mulig for kolonnedefinisjoner å bruke enten enkle tekststrenger eller fullstendige renderingsfunksjoner for overskrifter og celler.

Denne samlede API-en betyr at De ikke trenger å kontrollere definisjonens type før rendering.

Cellekontekst og renderValue

cell.renderValue() returnerer den rå accessor-verdien formatert som en tekststreng. For mer kontroll gir cell.getContext() Dem hele renderingskonteksten, inkludert raden, kolonnen, tabellinstansen og råverdien.

Egendefinerte cell-renderere bruker konteksten til å få tilgang til relaterte data fra raden utover den ene accessor-verdien.

Kolonne-pinning og meta

Hver ColumnDef godtar et meta-felt der De kan legge til vilkårlige metadata, som isSticky: true eller alignment: 'right'. Hent dette i rendereren via column.columnDef.meta.

For å feste kolonner til venstre eller høyre tilbyr TanStack Table state for column pinning og hjelpemetoder på kolonneobjektet.

Sette alt sammen

Definer en ColumnDef-array med accessorKey, header og eventuelt cell. Kall useReactTable med data, columns og getCoreRowModel. Map getHeaderGroups for thead og getRowModel().rows for tbody, og bruk flexRender til å gjengi hver overskrift og celle.

Dette minimale oppsettet gir Dem en fullt funksjonell tabell med fullstendig egendefinert styling.

accessorKey kontra accessorFn

Når bør De bruke accessorFn i stedet for accessorKey i en kolonnedefinisjon for TanStack Table?

Oppsummering av leksjonen

Definer kolonner ved hjelp av ColumnDef, med accessorKey for direkte felter eller accessorFn for beregnede verdier. Send columns og getCoreRowModel til useReactTable, og gjengi deretter med getHeaderGroups for overskrifter og getRowModel().rows for body-rader.

Hjelpefunksjonen flexRender håndterer både tekststrengbaserte og funksjonsbaserte overskrifts- og celldefinisjoner på en ensartet måte.

Gratis å komme i gang

Lær deg React med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
88
Leksjoner
324

Ofte stilte spørsmål

Er leksjonen «Definere kolonner og gjengi rader» gratis?

Ja – hele teksten i «Definere kolonner og gjengi rader» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av React Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i React Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Definere kolonner og gjengi rader»?

Konfigurer kolonnedefinisjoner med accessors, overskrifter og cell-renderere for å vise dataene Deres. Du øver på React Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med React Academy?

Ingen tidligere erfaring er nødvendig. React Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Definere kolonner og gjengi rader»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne React Academy-leksjonen?

Ja. Alle React Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. TanStack Table: filosofi og headless-design
  2. Definere kolonner og gjengi rader
  3. Sortering, filtrering og paginering
  4. Radvalg og virtualiserte tabeller
← Tilbake til React Academy