Ini adalah tabel shadcn dengan penyortiran, penyaringan, dan pagination sisi server. Ini bootstrap dengan create-t3-app
.
PERINGATAN Proyek ini masih dalam pengembangan dan tidak siap untuk digunakan produksi.
Ini menggunakan teknologi baru (PPR, React Compiler) yang dapat berubah dan dapat merusak aplikasi Anda.
useDataTable
) dataTable
dan props columns
) filterFields
prop) Data-Table-Toolbar
Dynamic dengan pencarian, filter, dan tindakan Notion
opsional seperti pemfilteran lanjutan ( enableAdvancedFilter
prop) Linear
opsional seperti floating bar pada pemilihan baris ( floatingBar
prop) Klon Repositori
git clone https://github.com/sadmann7/shadcn-table
Instal dependensi menggunakan PNPM
pnpm install
Salin .env.example
ke .env
dan perbarui variabel.
cp .env.example .env
Mulai server pengembangan
pnpm run dev
Dorong Skema Database
pnpm run db:push
Salin folder dan file berikut ke dalam proyek Anda (dikonfigurasi dengan) di lokasi spesifik yang tepat
src/components/data-table
src/db/index.ts
src/hooks
src/lib
src/types
Juga pasang komponen shadcn yang diperlukan dan paket lain yang diperlukan dengan perintah berikut:
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
Konfigurasikan variabel lingkungan Anda kemudian atur URL database, untuk contoh ini, kami menggunakan database PlanetScale MySQL2. Skema kami juga akan dibuat menggunakan ini.
Tindakan Basis Data: Untuk ini Anda dapat menggunakan ORM pilihan Anda, tetapi demi contoh khusus ini, kami menggunakan gerimis ORM dan neon.
Sebagai contoh, mari kita gunakan tabel tasks
.
@/db/schema.ts
@/lib/validations/tasks.ts
fileMenyiapkan Tabel
page.tsx
dan, jika perlu, layout.tsx
di direktori aplikasi Anda../_components
dan ./_lib
direktori ke dalam proyek Anda../_lib/queries.ts
, dan ./_lib/actions.ts
untuk mencocokkan operasi basis data Anda../_components/tasks-table-floating-bar.tsx
untuk mencocokkan tindakan meja Anda (opsional)../_components/tasks-table-columns.tsx
untuk mendefinisikan header kolom, tindakan, kolom yang dapat dicari dan difilter../page.tsx
, tentukan getTasksPromise
, getTaskCountByStatus
, dan getTaskCountByPriority
../_components/tasks-table.tsx
, konsumsi janji getTasksPromise
menggunakan React.use
hook. Janji diteruskan untuk memicu batas suspense
../_components/tasks-table.tsx
, memoize kolom yang didefinisikan dalam ./_components/tasks-table-columns.tsx
menggunakan React.useMemo
hook untuk mencegah re-render yang tidak perlu../_components/tasks-table.tsx
, hubungi ./hooks/useTasksTable.tsx
hook untuk menangani pagination sisi server, penyortiran, dan penyaringan../components/tasks-table-provider.tsx
. Penyedia digunakan untuk menampilkan beberapa fitur tambahan seperti floating bar dan filter canggih. Tonton video CodeBase Ikhtisar di YouTube.
Pertimbangkan untuk berlangganan saluran YouTube Kavin Desi Valli untuk lebih banyak video.
Ikuti pemandu penyebaran untuk Vercel, Netlify dan Docker untuk informasi lebih lanjut.