นี่คือตาราง Shadcn ที่มีการเรียงลำดับเซิร์ฟเวอร์การกรองและการแบ่งหน้า มันถูก bootstrapped ด้วย create-t3-app
คำเตือน โครงการนี้ยังอยู่ในระหว่างการพัฒนาและยังไม่พร้อมสำหรับการใช้งานการผลิต
มันใช้เทคโนโลยีใหม่ (PPR, React Compiler) ซึ่งอาจมีการเปลี่ยนแปลงและอาจทำลายแอปพลิเคชันของคุณ
useDataTable
) dataTable
และ columns
อุปกรณ์ประกอบฉาก) filterFields
Prop) Data-Table-Toolbar
พร้อมการค้นหาตัวกรองและการกระทำ Notion
เสริมเช่นการกรองขั้นสูง ( enableAdvancedFilter
prop) Linear
เหมือนแถบลอยในการเลือกแถว ( floatingBar
Prop) โคลนที่เก็บ
git clone https://github.com/sadmann7/shadcn-table
ติดตั้งการพึ่งพาโดยใช้ PNPM
pnpm install
คัดลอก .env.example
เป็น .env
และอัปเดตตัวแปร
cp .env.example .env
เริ่มต้นเซิร์ฟเวอร์การพัฒนา
pnpm run dev
กดสคีมาฐานข้อมูล
pnpm run db:push
คัดลอกโฟลเดอร์และไฟล์ต่อไปนี้ลงในโครงการของคุณ (กำหนดค่าด้วย) ที่ตำแหน่งเฉพาะที่แน่นอน
src/components/data-table
src/db/index.ts
src/hooks
src/lib
src/types
ติดตั้งส่วนประกอบ ShadCN ที่ต้องการและแพ็คเกจอื่น ๆ ที่จำเป็นด้วยคำสั่งต่อไปนี้:
pnpm dlx shadcn@latest init
pnpm dlx shadcn@latest add badge button calendar checkbox command dialog dropdown-menu form input label popover select separator skeleton sonner table toggle-group tooltip drawer
pnpm add drizzle-orm postgres @tanstack/react-table zod @t3-oss/env-nextjs
pnpm add -D drizzle-kit dotenv-cli pg tsx
กำหนดค่าตัวแปรสภาพแวดล้อมของคุณจากนั้นตั้งค่า URL ฐานข้อมูลสำหรับตัวอย่างนี้เราใช้ฐานข้อมูล PlanetScale MySQL2 schemas ของเราจะทำโดยใช้สิ่งนี้
การกระทำฐานข้อมูล: สำหรับสิ่งนี้คุณสามารถใช้ ORM ใด ๆ ที่คุณเลือก แต่เพื่อประโยชน์ของตัวอย่างนี้เราใช้ Drizzle Orm และ Neon
ตัวอย่างเช่นให้ใช้ตาราง tasks
@/db/schema.ts
@/lib/validations/tasks.ts
ไฟล์การตั้งค่าตาราง
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
, กำหนด getTasksPromise
, getTaskCountByStatus
และ getTaskCountByPriority
./_components/tasks-table.tsx
ใช้สัญญา getTasksPromise
โดยใช้ React.use
hook คำสัญญาจะถูกส่งผ่านไปยังเขตแดน suspense
./_components/tasks-table.tsx
, คอลัมน์บันทึกความทรงจำที่กำหนดไว้ใน ./_components/tasks-table-columns.tsx
โดยใช้ React.useMemo
hook เพื่อป้องกันการวิ่งซ้ำที่ไม่จำเป็น./_components/tasks-table.tsx
, call ./hooks/useTasksTable.tsx
hook เพื่อจัดการกับการแบ่งหน้าเซิร์ฟเวอร์การเรียงลำดับและการกรอง./components/tasks-table-provider.tsx
ผู้ให้บริการใช้เพื่อแสดงคุณสมบัติเพิ่มเติมบางอย่างเช่นแถบลอยและตัวกรองขั้นสูง ดูวิดีโอภาพรวม Codebase บน YouTube
พิจารณาสมัครรับข้อมูลช่อง YouTube ของ Kavin Desi Valli สำหรับวิดีโอเพิ่มเติม
ทำตามคำแนะนำการปรับใช้สำหรับ Vercel, Netlify และ Docker สำหรับข้อมูลเพิ่มเติม