Framework
Version
Enterprise

Tabelleninstanz-Anleitung

API

Tabellen-API

Tabelleninstanz-Anleitung

TanStack Table ist eine Headless-UI-Bibliothek. Wenn wir von der Tabelle oder "Tabelleninstanz" sprechen, meinen wir kein tatsächliches <table>-Element. Stattdessen beziehen wir uns auf das Kernobjekt der Tabelle, das den Zustand und die APIs der Tabelle enthält. Die Tabelleninstanz wird durch Aufrufen der createTable-Funktion Ihres Adapters erstellt (z. B. useReactTable, createSolidTable, createSvelteTable, useQwikTable, useVueTable).

Erstellen einer Tabelleninstanz

Zum Erstellen einer Tabelleninstanz sind 2 Optionen erforderlich: columns und data. Es gibt Dutzende weiterer Tabellenoptionen zur Konfiguration von Funktionen und Verhalten, aber diese 2 sind erforderlich.

Definieren von Daten

data ist ein Array von Objekten, die in die Zeilen Ihrer Tabelle umgewandelt werden. Jedes Objekt im Array stellt eine Datenzeile dar (unter normalen Umständen). Wenn Sie TypeScript verwenden, definieren wir normalerweise einen Typ für die Form unserer Daten. Dieser Typ wird als generischer Typ für alle anderen Tabellen-, Spalten-, Zeilen- und Zellinstanzen verwendet. Dieser Typ wird üblicherweise als TData bezeichnet.

Wenn wir zum Beispiel eine Tabelle haben, die eine Liste von Benutzern in einem Array wie diesem anzeigt

json
[
  {
    "firstName": "Tanner",
    "lastName": "Linsley",
    "age": 33,
    "visits": 100,
    "progress": 50,
    "status": "Married"
  },
  {
    "firstName": "Kevin",
    "lastName": "Vandy",
    "age": 27,
    "visits": 200,
    "progress": 100,
    "status": "Single"
  }
]
[
  {
    "firstName": "Tanner",
    "lastName": "Linsley",
    "age": 33,
    "visits": 100,
    "progress": 50,
    "status": "Married"
  },
  {
    "firstName": "Kevin",
    "lastName": "Vandy",
    "age": 27,
    "visits": 200,
    "progress": 100,
    "status": "Single"
  }
]

Dann können wir einen Benutzertyp (TData) wie diesen definieren

ts
//TData
type User = {
  firstName: string
  lastName: string
  age: number
  visits: number
  progress: number
  status: string
}
//TData
type User = {
  firstName: string
  lastName: string
  age: number
  visits: number
  progress: number
  status: string
}

Wir können dann unser data-Array mit diesem Typ definieren, und TanStack Table kann dann später für uns viele Typen in unseren Spalten, Zeilen, Zellen usw. intelligent ableiten.

ts
//note: data needs a "stable" reference in order to prevent infinite re-renders
const data: User[] = []
//or
const [data, setData] = React.useState<User[]>([])
//or
const data = ref<User[]>([])
//etc...
//note: data needs a "stable" reference in order to prevent infinite re-renders
const data: User[] = []
//or
const [data, setData] = React.useState<User[]>([])
//or
const data = ref<User[]>([])
//etc...

Hinweis: data benötigt eine "stabile" Referenz (besonders in React), um unendliche Neuberechnungen zu verhindern. Deshalb empfehlen wir die Verwendung von React.useState oder React.useMemo, oder das Definieren Ihrer Daten außerhalb derselben React-Komponente, die die Tabelleninstanz erstellt, oder die Verwendung einer Bibliothek wie TanStack Query zur Verwaltung Ihres Datenzustands.

Definieren von Spalten

Spaltendefinitionen werden im nächsten Abschnitt ausführlich im Leitfaden für Spaltendefinitionen behandelt. Wir weisen hier jedoch darauf hin, dass Sie beim Definieren des Typs Ihrer Spalten denselben TData-Typ verwenden sollten, den Sie für Ihre Daten verwendet haben.

ts
const columns: ColumnDef<User>[] = [] //Pass User type as the generic TData type
//or
const columnHelper = createColumnHelper<User>() //Pass User type as the generic TData type
const columns: ColumnDef<User>[] = [] //Pass User type as the generic TData type
//or
const columnHelper = createColumnHelper<User>() //Pass User type as the generic TData type

In den Spaltendefinitionen legen wir fest, wie jede Spalte Zeilendaten mit einem accessorKey oder accessorFn abrufen und/oder transformieren soll. Weitere Informationen finden Sie im Leitfaden für Spaltendefinitionen.

Erstellen der Tabelleninstanz

Mit unseren definierten columns und data können wir nun unsere grundlegende Tabelleninstanz erstellen.

ts
//vanilla js
const table = createTable({ columns, data })

//react
const table = useReactTable({ columns, data })

//solid
const table = createSolidTable({ columns, data })

//svelte
const table = createSvelteTable({ columns, data })

//vue
const table = useVueTable({ columns, data })
//vanilla js
const table = createTable({ columns, data })

//react
const table = useReactTable({ columns, data })

//solid
const table = createSolidTable({ columns, data })

//svelte
const table = createSvelteTable({ columns, data })

//vue
const table = useVueTable({ columns, data })

Was befindet sich also in der Tabelleninstanz? Werfen wir einen Blick darauf, welche Interaktionen wir mit der Tabelleninstanz haben können.

Tabellenstatus

Die Tabelleninstanz enthält den gesamten Zustand der Tabelle, auf den über die API table.getState() zugegriffen werden kann. Jede Tabellenfunktion registriert verschiedene Zustände im Zustand der Tabelle. So registriert beispielsweise die Zeilenauswahlfunktion den rowSelection-Status, die Paginierungsfunktion den pagination-Status usw.

Jede Funktion hat auch entsprechende Status-Setter-APIs und Status-Resetter-APIs auf der Tabelleninstanz. So hat die Zeilenauswahlfunktion beispielsweise eine setRowSelection-API und eine resetRowSelection.

ts
table.getState().rowSelection //read the row selection state
table.setRowSelection((old) => ({...old})) //set the row selection state
table.resetRowSelection() //reset the row selection state
table.getState().rowSelection //read the row selection state
table.setRowSelection((old) => ({...old})) //set the row selection state
table.resetRowSelection() //reset the row selection state

Tabellen-APIs

Es gibt Dutzende von Tabellen-APIs, die von jeder Funktion erstellt werden, um Ihnen zu helfen, den Tabellenstatus auf verschiedene Weise zu lesen oder zu ändern.

API-Referenzdokumente für die Kern-Tabelleninstanz und alle anderen Funktions-APIs finden Sie in den API-Dokumenten.

Die API-Dokumentation für die Kern-Tabelleninstanz finden Sie hier: Tabellen-API

Tabellen-Zeilenmodelle

Es gibt einen speziellen Satz von Tabelleninstanz-APIs zum Auslesen von Zeilen aus der Tabelleninstanz, die als Zeilenmodelle bezeichnet werden. TanStack Table verfügt über fortschrittliche Funktionen, bei denen die generierten Zeilen erheblich von dem Array der ursprünglich übergebenen data abweichen können. Um mehr über die verschiedenen Zeilenmodelle zu erfahren, die Sie als Tabellenoption übergeben können, lesen Sie den Leitfaden für Zeilenmodelle.

Unsere Partner
Code Rabbit
AG Grid
Bytes abonnieren

Ihre wöchentliche Dosis JavaScript-Nachrichten. Jeden Montag kostenlos an über 100.000 Entwickler geliefert.

Bytes

Kein Spam. Jederzeit kündbar.

Bytes abonnieren

Ihre wöchentliche Dosis JavaScript-Nachrichten. Jeden Montag kostenlos an über 100.000 Entwickler geliefert.

Bytes

Kein Spam. Jederzeit kündbar.