You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为TanStack React Table的ColumnDef指定Prisma findMany数据类型?

解决TanStack React Table结合Prisma的类型定义问题

直接用Prisma自动生成的User类型就能解决,具体操作如下:

  1. 导入Prisma生成的User类型
    Prisma会根据你的schema自动生成类型定义,直接从@prisma/client里导入即可:
import type { User } from '@prisma/client';
  1. 在ColumnDef和函数参数中使用该类型
    在抽离的列定义文件里,把WHAT_HERE替换成User:
import { ColumnDef } from '@tanstack/react-table';
import type { User } from '@prisma/client';

// 列数组类型定义为ColumnDef<User>[]
export const userColumns: ColumnDef<User>[] = [
  {
    accessorKey: 'id',
    header: 'ID',
    // 参数row.original的类型自动推导为User
    cell: ({ row }) => <span>{row.original.id}</span>,
  },
  {
    accessorKey: 'name',
    header: '姓名',
    cell: ({ row }) => <span>{row.original.name}</span>,
  },
  // 其他列定义...
];
  1. 在页面组件中使用抽离的列
    直接导入定义好的列数组,配合Prisma查询返回的users数据使用:
import { useReactTable } from '@tanstack/react-table';
import { userColumns } from './userColumns';
import { prisma } from './path-to-prisma-client';

async function UserTable() {
  const users = await prisma.user.findMany({ skip: 0, take: 10 });
  
  const table = useReactTable({
    columns: userColumns,
    data: users,
  });

  // 表格渲染逻辑...
}

Prisma生成的User类型和findMany返回的数据结构完全匹配,用它既能保证类型安全,又能摆脱对组件内typeof users的依赖,完美适配列定义抽离的场景。

内容的提问来源于stack exchange,提问作者rejam_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 20:12:33