APIs de ColumnDef
Las definiciones de columna son objetos simples con las siguientes opciones:
Opciones
id
id: string;
El identificador único para la columna.
🧠 Un ID de columna es opcional cuando:
- Se crea una columna accesora con un accesor de clave de objeto
- El encabezado de la columna se define como una cadena
accessorKey
accessorKey?: string & typeof TData
La clave del objeto de fila a usar al extraer el valor para la columna.
accessorFn
accessorFn?: (originalRow: TData, index: number) => any
La función accesora a usar al extraer el valor para la columna de cada fila.
columns
columns?: ColumnDef<TData>[]
Las definiciones de columna hijas a incluir en una columna de grupo.
header
header?:
| string
| ((props: {
table: Table<TData>
header: Header<TData>
column: Column<TData>
}) => unknown)
El encabezado a mostrar para la columna. Si se pasa una cadena, se puede usar como valor predeterminado para el ID de columna. Si se pasa una función, se le pasará un objeto props para el encabezado y debería devolver el valor del encabezado renderizado (el tipo exacto depende del adaptador que se esté utilizando).
footer
footer?:
| string
| ((props: {
table: Table<TData>
header: Header<TData>
column: Column<TData>
}) => unknown)
El pie de página a mostrar para la columna. Si se pasa una función, se le pasará un objeto props para el pie de página y debería devolver el valor del pie de página renderizado (el tipo exacto depende del adaptador que se esté utilizando).
cell
cell?:
| string
| ((props: {
table: Table<TData>
row: Row<TData>
column: Column<TData>
cell: Cell<TData>
getValue: () => any
renderValue: () => any
}) => unknown)
La celda a mostrar para cada fila de la columna. Si se pasa una función, se le pasará un objeto props para la celda y debería devolver el valor de la celda renderizado (el tipo exacto depende del adaptador que se esté utilizando).
meta
meta?: ColumnMeta // ¡Esta interfaz es extensible mediante la fusión de declaraciones. Ver a continuación!
Los metadatos a asociar con la columna. Podemos acceder a ellos en cualquier lugar donde la columna esté disponible a través de column.columnDef.meta. Este tipo es global para todas las tablas y puede extenderse así:
import "@tanstack/react-table"; //o vue, svelte, solid, qwik, etc.
declare module "@tanstack/react-table" {
interface ColumnMeta<TData extends RowData, TValue> {
foo: string;
}
}