0Pricing
React Academy · Lección

Definir columnas y renderizar filas

Configurar definiciones de columnas con accessors, encabezados y renderizadores de celdas para mostrar sus datos

Definir columnas y renderizar filas es una lección gratuita de React Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

El tipo ColumnDef

Cada columna de TanStack Table se describe mediante un objeto ColumnDef. Los dos campos más importantes son accessorKey (el nombre de la propiedad del objeto de datos) y header (la cadena con la etiqueta de la columna o una función de renderizado).

El enfoque accessorKey es ideal para datos planos; los valores complejos o calculados requieren accessorFn.

accessorKey frente a accessorFn

Cuando sus datos tienen una propiedad directa como name o email, use accessorKey: 'name'. Cuando necesite calcular un valor (por ejemplo, combinar firstName y lastName), use accessorFn: row => row.firstName + ' ' + row.lastName.

Ambos tienen tipado completo cuando proporciona el genérico de datos de fila a ColumnDef.

Renderizado personalizado de celdas con cell

El campo cell de un objeto ColumnDef acepta una función que recibe el contexto de la celda y devuelve JSX. Así es como se renderizan insignias, botones, imágenes o cualquier UI personalizada dentro de una celda.

Para valores de texto simples, cell.renderValue() es suficiente. Para cualquier contenido más complejo, extraiga mediante desestructuración la información de cell.getContext().

Crear la matriz de columnas

Defina sus columnas fuera del componente para evitar recrearlas en cada renderizado. Pase la matriz a useReactTable junto con data y getCoreRowModel.

TypeScript inferirá los tipos de las columnas cuando anote ColumnDef con su tipo de datos, lo que le proporcionará autocompletado para los valores de accessorKey.

Explicación de getCoreRowModel

getCoreRowModel es una función factoría importada de @tanstack/react-table. Pase su valor de retorno a useReactTable para indicar a la instancia cómo construir la lista básica de filas a partir de su matriz de datos.

Los modelos de filas adicionales (ordenadas, filtradas y paginadas) se superponen pasando factorías adicionales de modelos.

Renderizar thead con getHeaderGroups

Llame a table.getHeaderGroups() y recorra el resultado con map para renderizar su thead. Cada grupo de encabezados tiene una matriz headers; cada header tiene una definición de columna y un id.

Use flexRender(header.column.columnDef.header, header.getContext()) para renderizar el contenido del encabezado, ya sea una cadena o una función que devuelve JSX.

Renderizar tbody con getRowModel

Llame a table.getRowModel().rows y recorra cada fila para crear un elemento tr. Dentro, llame a row.getVisibleCells() y recorra cada celda para crear un elemento td.

Use flexRender(cell.column.columnDef.cell, cell.getContext()) para renderizar el contenido de la celda, respetando cualquier renderizador personalizado definido en la columna.

La utilidad flexRender

flexRender es un auxiliar que acepta un componente de React, una función que devuelve JSX o un valor simple, y lo renderiza de forma coherente. Permite que las definiciones de columnas usen cadenas simples o funciones de renderizado completas tanto para los encabezados como para las celdas.

Esta API unificada significa que no necesita comprobar el tipo de la definición antes de renderizarla.

Contexto de la celda y renderValue

cell.renderValue() devuelve el valor sin procesar del accessor, formateado como una cadena. Para tener más control, cell.getContext() proporciona el contexto completo de renderizado, incluida la fila, la columna, la instancia de tabla y el valor sin procesar.

Los renderizadores personalizados de celdas usan el contexto para acceder a datos relacionados de la fila más allá del valor de un único accessor.

Fijación de columnas y meta

Cada ColumnDef acepta un campo meta donde puede adjuntar metadatos arbitrarios, como isSticky: true o alignment: 'right'. Acceda a ellos en el renderizador mediante column.columnDef.meta.

Para fijar columnas a la izquierda o a la derecha, TanStack Table proporciona el estado de fijación de columnas y métodos auxiliares en el objeto de columna.

Unir todas las piezas

Defina una matriz de ColumnDef con accessorKey, header y cell opcional. Llame a useReactTable con data, columns y getCoreRowModel. Recorra getHeaderGroups para thead y getRowModel().rows para tbody, usando flexRender para renderizar cada encabezado y celda.

Esta configuración mínima le proporciona una tabla completamente funcional y con estilos totalmente personalizados.

accessorKey frente a accessorFn

¿Cuándo debe usar accessorFn en lugar de accessorKey en una definición de columna de TanStack Table?

Resumen de la lección

Defina las columnas mediante ColumnDef, usando accessorKey para campos directos o accessorFn para valores calculados. Pase columns y getCoreRowModel a useReactTable y, después, renderice con getHeaderGroups para los encabezados y getRowModel().rows para las filas del cuerpo.

La utilidad flexRender gestiona de manera uniforme las definiciones de encabezados y celdas basadas tanto en cadenas como en funciones.

Preguntas frecuentes

¿La lección «Definir columnas y renderizar filas» es gratis?

Sí — el texto completo de «Definir columnas y renderizar filas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Definir columnas y renderizar filas»?

Configurar definiciones de columnas con accessors, encabezados y renderizadores de celdas para mostrar sus datos Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Definir columnas y renderizar filas»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Filosofía de TanStack Table y diseño headless
  2. Definir columnas y renderizar filas
  3. Ordenación, filtrado y paginación
  4. Selección de filas y tablas virtualizadas
← Volver a React Academy