Definindo colunas e renderizando linhas
Configure definições de colunas com acessadores, cabeçalhos e renderizadores de células para exibir seus dados.
Definindo colunas e renderizando linhas é uma aula grátis de React Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.
O tipo ColumnDef
Cada coluna do TanStack Table é descrita por um objeto ColumnDef. Os dois campos mais importantes são accessorKey (o nome da propriedade no seu objeto de dados) e header (o texto do rótulo da coluna ou uma função de renderização).
A abordagem com accessorKey é ideal para dados planos; valores complexos ou calculados precisam de accessorFn.
accessorKey versus accessorFn
Quando seus dados têm uma propriedade direta como name ou email, use accessorKey: 'name'. Quando precisar calcular um valor (por exemplo, combinando firstName e lastName), use accessorFn: row => row.firstName + ' ' + row.lastName.
Ambos são totalmente tipados quando você fornece o tipo genérico dos dados da linha a ColumnDef.
Renderização personalizada de células com cell
O campo cell em um ColumnDef aceita uma função que recebe o contexto da célula e retorna JSX. É assim que você renderiza distintivos, botões, imagens ou qualquer interface personalizada dentro de uma célula.
Para valores de texto simples, cell.renderValue() é suficiente. Para qualquer conteúdo mais elaborado, extraia as informações de cell.getContext().
Criando a matriz de colunas
Defina suas colunas fora do componente para evitar recriá-las a cada renderização. Passe a matriz para useReactTable junto com seus dados e getCoreRowModel.
TypeScript inferirá os tipos das colunas quando você anotar ColumnDef com seu tipo de dados, oferecendo preenchimento automático para os valores de accessorKey.
Explicação de getCoreRowModel
getCoreRowModel é uma função de fábrica importada de @tanstack/react-table. Você passa o valor retornado por ela para useReactTable, informando à instância como criar a lista básica de linhas a partir da sua matriz de dados.
Modelos de linhas adicionais (ordenados, filtrados e paginados) são sobrepostos a esse modelo passando outras funções de fábrica.
Renderizando o cabeçalho com getHeaderGroups
Chame table.getHeaderGroups() e percorra o resultado para renderizar o cabeçalho da tabela. Cada grupo de cabeçalho tem uma lista de cabeçalhos; cada cabeçalho tem uma definição de coluna e um identificador.
Use flexRender(header.column.columnDef.header, header.getContext()) para renderizar o conteúdo do cabeçalho, seja ele uma cadeia de texto ou uma função que retorna JSX.
Renderizando o corpo com getRowModel
Chame table.getRowModel().rows e percorra cada linha para renderizar um elemento de linha. Dentro dele, chame row.getVisibleCells() e transforme cada célula em um elemento de célula.
Use flexRender(cell.column.columnDef.cell, cell.getContext()) para renderizar o conteúdo da célula, respeitando qualquer função personalizada de renderização definida na coluna.
O utilitário flexRender
flexRender é um auxiliar que aceita um componente React, uma função que retorna JSX ou um valor simples e os renderiza de maneira consistente. Ele permite que as definições de coluna usem tanto cadeias de texto simples quanto funções completas de renderização para cabeçalhos e células.
Essa interface unificada significa que você não precisa verificar o tipo da definição antes de renderizá-la.
Contexto da célula e renderValue
cell.renderValue() retorna o valor bruto fornecido pelo acessador, formatado como texto. Para ter mais controle, cell.getContext() fornece o contexto completo de renderização, incluindo a linha, a coluna, a instância da tabela e o valor bruto.
Funções personalizadas de renderização de células usam o contexto para acessar dados relacionados da linha além do valor fornecido por um único acessador.
Fixação de colunas e metadados
Cada ColumnDef aceita um campo meta, no qual você pode anexar metadados arbitrários, como isSticky: true ou alignment: 'right'. Acesse esses dados no seu renderizador por meio de column.columnDef.meta.
Para fixar colunas à esquerda ou à direita, TanStack Table fornece o estado de fixação de colunas e métodos auxiliares no objeto da coluna.
Juntando tudo
Defina uma matriz ColumnDef com accessorKey, header e cell opcional. Chame useReactTable com data, columns e getCoreRowModel. Percorra getHeaderGroups para o cabeçalho da tabela e getRowModel().rows para o corpo, usando flexRender para renderizar cada cabeçalho e célula.
Essa configuração mínima oferece uma tabela totalmente funcional e com estilização totalmente personalizada.
accessorKey versus accessorFn
Quando você deve usar accessorFn em vez de accessorKey na definição de uma coluna do TanStack Table?
Recapitulação da lição
Defina as colunas usando ColumnDef com accessorKey para campos diretos ou accessorFn para valores calculados. Passe columns e getCoreRowModel para useReactTable e renderize com getHeaderGroups para os cabeçalhos e getRowModel().rows para as linhas do corpo.
O utilitário flexRender trata de maneira uniforme as definições de cabeçalho e célula baseadas tanto em cadeias de texto quanto em funções.
Perguntas Frequentes
A aula “Definindo colunas e renderizando linhas” é grátis?
Sim — o texto completo de “Definindo colunas e renderizando linhas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.
O que vou aprender em “Definindo colunas e renderizando linhas”?
Configure definições de colunas com acessadores, cabeçalhos e renderizadores de células para exibir seus dados. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar React Academy?
Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Definindo colunas e renderizando linhas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de React Academy?
Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Filosofia do TanStack Table e design sem interface
- Definindo colunas e renderizando linhas
- Ordenação, filtragem e paginação
- Seleção de linhas e tabelas virtualizadas