shadcn-table

shadcn-table

基于Next.js的自定义表格组件 支持服务端数据处理

shadcn-table是基于Next.js和shadcn/ui的表格组件,提供服务端数据处理功能。它支持自定义列、动态搜索和分面过滤,并集成了高级筛选和浮动操作栏。该项目采用TanStack/react-table和Drizzle ORM等技术,为开发者提供灵活的表格解决方案。

Shadcn Table服务器端表格Next.jsTanStackTailwind CSSGithub开源项目

Shadcn 表格

这是一个具有服务器端排序、筛选和分页功能的 shadcn 表格。它是使用 create-t3-app 引导创建的。

Shadcn 表格

警告 此项目仍在开发中,尚未准备好用于生产环境。

它使用了新技术(ppr、react 编译器),这些技术可能会发生变化并可能导致您的应用程序出现问题。

技术栈

特性

  • 服务器端分页、排序和筛选(通过 useDataTable 钩子)
  • 可自定义列(dataTablecolumns 属性)
  • 动态防抖搜索筛选器和多面筛选器(filterFields 属性)
  • 动态 Data-Table-Toolbar,包含搜索、筛选和操作
  • 可选的类似 Notion 的高级筛选(enableAdvancedFilter 属性)
  • 可选的类似 Linear 的行选择浮动栏(floatingBar 属性)

本地运行

  1. 克隆仓库

    git clone https://github.com/sadmann7/shadcn-table
  2. 使用 pnpm 安装依赖

    pnpm install
  3. 复制 .env.example.env 并更新变量。

    cp .env.example .env
  4. 启动开发服务器

    pnpm run dev
  5. 推送数据库架构

    pnpm run db:push

构建您自己的表格

  1. 将以下文件夹和文件复制到您的项目中(已配置)的指定位置

    • src/components/data-table
    • src/db/index.ts
    • src/hooks
    • src/lib
    • src/types

    同时使用以下命令安装所需的 shadcn 组件和其他必需包:

    pnpm dlx shadcn-ui@latest init pnpm dlx shadcn-ui@latest add badge button calendar checkbox command dialog dropdown-menu form input label popover select separator skeleton sonner table toggle-group tooltip pnpm add drizzle-orm postgres @tanstack/react-table zod @t3-oss/env-nextjs pnpm add -D drizzle-kit dotenv-cli pg tsx
  2. 配置环境变量 然后设置数据库 URL,在本例中,我们使用 PlanetScale MySQL2 数据库。我们的架构也将使用此数据库。

  3. 数据库操作:您可以使用任何您选择的 ORM,但在这个特定示例中,我们使用 Drizzle ORMNeon

    tasks 表为例。

    • @/db/schema.ts 创建表格架构
    • @/lib/validations/tasks.ts 文件中创建相关的 zod 验证
  4. 设置表格

    • 创建文件:在您的 app 目录中创建 page.tsx 和(如果需要)layout.tsx
    • 复制目录:将 ./_components./_lib 目录复制到您的项目中。
    • 更新查询/变更:修改 ./_lib/queries.ts./_lib/actions.ts 以匹配您的数据库操作。
    • 更新浮动栏:更新 ./_components/tasks-table-floating-bar.tsx 以匹配您表格的操作(可选)。
    • 定义表格列:更新 ./_components/tasks-table-columns.tsx 以定义列标题、操作、可搜索和可筛选的列。
    • 设置数据获取:在 ./page.tsx 中,定义 getTasksPromisegetTaskCountByStatusgetTaskCountByPriority
    • 获取数据:在 ./_components/tasks-table.tsx 中,使用 React.use 钩子消费 getTasksPromise 承诺。该承诺被传递以触发 suspense 边界。
    • 记忆化表格列:在 ./_components/tasks-table.tsx 中,使用 React.useMemo 钩子记忆化在 ./_components/tasks-table-columns.tsx 中定义的列,以防止不必要的重新渲染。
    • 使用数据表格钩子:在 ./_components/tasks-table.tsx 中,调用 ./hooks/useTasksTable.tsx 钩子来处理服务器端分页、排序和筛选。
    • 移除任务表格提供者:确保从 ./components/tasks-table-provider.tsx 中移除提供者。该提供者用于展示一些额外功能,如浮动栏和高级筛选。

代码库概述

YouTube 上观看代码库概述视频。

考虑订阅 Kavin Desi Valli 的 YouTube 频道 以获取更多视频。

如何部署?

请遵循 VercelNetlifyDocker 的部署指南以获取更多信息。

编辑推荐精选

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

下拉加载更多