Tag Archive React

Byphunsanit

DataTables: ได้เวลาย้ายออก

DataTables (ใช้ jQuery อยู่แต่ jQuery แทบไม่พัฒนาแล้ว) แม้จะเป็นตำนานที่ช่วยเรามานาน แต่ในโลกของ Modern React การเปลี่ยนไปใช้ตัวอื่นที่ “คุยภาษาเดียวกัน” กับ React จะช่วยลดความปวดหัวได้มหาศาลครับ เหตุผลสั้นๆ ที่ควรเปลี่ยนคือ “Single Source of Truth” ครับ ใน React เราอยากให้ Data เป็นตัวกำหนดหน้าตา (State-driven) แต่ jQuery DataTables มันชอบไปแอบแก้หน้าจอเองโดยที่ React ไม่รู้เรื่อง ซึ่งมักจะทำให้เกิดบั๊กแปลกๆ เวลาเราอัปเดตข้อมูล


AG Grid (Community Edition) – สายฟีเจอร์จัดเต็ม

ถ้าคุณต้องการตารางที่ทำได้ทุกอย่างเหมือน Excel (ลากคอลัมน์ได้, กรองข้อมูลซับซ้อนได้)

ข้อดี

  • ฟีเจอร์เยอะมากตั้งแต่ออกเรือน ประสิทธิภาพสูงมาก (High Performance) จัดการข้อมูลหมื่นแสนแถวได้ลื่นปรื๊ด

เหมาะสำหรับ

  • ระบบจัดการข้อมูลหลังบ้าน (Admin Panel), ระบบบัญชี, ระบบหลังบ้าน (Dashboard) หรือหน้าจอที่ต้องแสดงข้อมูลเป็นหมื่นแสนแถวโดยไม่ค้าง หรือโปรเจกต์ที่เน้นการจัดการ Data หนัก ๆ

ข้อสังเกต

  • โครงสร้างการเขียนจะดูเป็น “Object-based” (สไตล์ Java/Enterprise) และขนาดไฟล์ค่อนข้างใหญ่
  • เน้น Text/Number พื้นฐาน (ถ้าจะทำสวย ๆ ต้องเขียน Component เอง)
  • ตัวฟรีมักจะได้แค่ CSV (Excel/PDF ต้อง Enterprise)

Mantine / MUI Data Grid – สายสำเร็จรูป

ถ้าคุณใช้ Component Library อย่าง MUI หรือ Mantine อยู่แล้ว

ข้อดี

  • ติดตั้งง่าย, พ่วงมากับระบบ Theme ของ Framework นั้น ๆ เลย, รองรับการจัดหน้า (Responsive) มาในตัว
  • งานที่ต้องการความเร็ว (Speed to Market) และหน้าตาดูเป็นมาตรฐาน

เหมาะสำหรับ

  • งานที่ต้องการความเร็ว (Rapid Prototyping) และต้องการให้ตารางหน้าตาเหมือนกับปุ่มหรือ Input อื่นๆ ในเว็บ

ข้อสังเกต

  • แค่โยน Array เข้าไป มันเนรมิตตารางสวยๆ ให้ทันที ไม่ต้องเขียน CSS เองสักบรรทัด

Tabulator – “สายม้ามืด (The All-rounder)”

เป็น Library ที่พยายามทำตัวเป็น “jQuery DataTables ในยุคใหม่” คือตั้งค่าง่ายและฟีเจอร์ครบในตัวเดียว

ข้อดี

  • มีฟีเจอร์แปลกๆ ที่ตัวอื่นไม่มี (เช่น การวาดกราฟในตาราง, การทำ Tree Structure แบบง่าย ๆ )
  • มี Built-in formatter เยอะมาก (เช่น ทำ ProgressBar, Star Rating ในช่องได้เลย)
  • รองรับ PDF, Excel, JSON, CSV ในตัว

เหมาะสำหรับ

  • คนที่ชอบสไตล์การ Setup แบบ DataTables (ส่ง config object เข้าไป) แต่ไม่อยากใช้ jQuery

ข้อสังเกต

  • เอกสารประกอบการใช้งานอาจจะดูไม่ทันสมัยเท่าพวก TanStack หรือ AG Grid

TanStack Table (ชื่อเดิมคือ React Table) – สายปรับแต่ง

ตัวนี้เป็นที่นิยมที่สุดในตอนนี้ เพราะมันเป็น Headless UI

ข้อดี

  • มันจัดการ Logic ให้หมด (Sort, Filter, Pagination) แต่ “ไม่แถม UI” ทำให้คุณเอาไปแต่ง CSS หรือใช้ร่วมกับ Tailwind/Bootstrap ได้อิสระ 100% หรือมีดีไซน์ของตัวเองอยู่แล้ว และไม่อยากให้ Library มาบังคับ CSS ของตาราง
  • ไฟล์จิ๋วมาก, ปรับแต่งท่าไหนก็ได้, รองรับ TypeScript ดีเยี่ยม

เหมาะสำหรับ

  • โปรเจกต์ที่ต้องการความเป๊ะเรื่องดีไซน์ และอยากได้ไฟล์ขนาดเล็ก (Lightweight)

ข้อสังเกต

  • ต้องเขียนโค้ด HTML/CSS เองเยอะในช่วงแรก เพราะไม่มี Component สำเร็จรูปให้

ตารางเปรียบเทียบสั้น ๆ

หัวข้อAG Grid (Comm)MUI / MantineTabulatorTanStack Table
ความง่ายปานกลางง่ายมากง่ายยาก (ต้องคุม UI เอง)
ความสวยมาตรฐาน (เรียบๆ)สวย (Modern)มาตรฐานแล้วแต่เราเขียน
ความเร็ว (Perf)สูงที่สุดปานกลางปานกลางสูง
ขนาดไฟล์ใหญ่ใหญ่ (รวม UI)ปานกลางเล็กที่สุด

สรุปสั้นๆ เลือกตัวไหนดี

  • ถ้าชอบ Tailwind และอยากคุมหน้าตาเอง → TanStack Table
  • ถ้าจะทำ Dashboard ข้อมูลหนักๆ ซับซ้อน → AG Grid
  • ถ้าอยากได้ ตารางสวยๆ จบงานไวๆ → MUI หรือ Mantine
  • ถ้าคิดถึงอารมณ์ DataTables แต่ไม่อยากใช้ jQuery → Tabulator

อ่านเพิ่มเติม