Project Icon

shadcn-table

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

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

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 的部署指南以获取更多信息。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号