Skip to content

การแยกไฟล์ Component (JSX/TSX File) ใน React

JSX/TSX File คืออะไร?

JSX (JavaScript XML) คือ syntax ที่ใช้เขียน UI ใน React ให้เหมือน HTML ใน JavaScript/TypeScript ไฟล์ที่ลงท้ายด้วย .jsx หรือ .tsx (สำหรับ TypeScript) จะใช้สำหรับเขียนคอมโพเนนต์แบบแยกไฟล์

ตัวอย่าง: ไม่แยกไฟล์ (Anti-pattern)

jsx
// App.js
function Header() {
  return <h1>My App</h1>;
}

function App() {
  return (
    <div>
      <Header />
      <p>Welcome!</p>
    </div>
  );
}
export default App;

ข้อเสีย: โค้ดจะรกและดูแลยากเมื่อโปรเจกต์ใหญ่ขึ้น


ตัวอย่าง: แยกไฟล์ Component (Best Practice)

src/components/Header.jsx

jsx
export default function Header() {
  return <h1>My App</h1>;
}

src/App.jsx

jsx
import Header from "./components/Header";

export default function App() {
  return (
    <div>
      <Header />
      <p>Welcome!</p>
    </div>
  );
}

ข้อดีของการแยกไฟล์ Component

  • โค้ดอ่านง่ายและเป็นระเบียบ
  • Reuse component ได้ง่าย
  • แก้ไข/ดูแลแต่ละส่วนได้แยกจากกัน
  • ลดความซับซ้อนของแต่ละไฟล์

วิธีตั้งชื่อไฟล์และโฟลเดอร์ (มาตรฐานสมัยใหม่)

  • ชื่อไฟล์และโฟลเดอร์ควรเป็น PascalCase เช่น MyButton.tsx, UserProfile.tsx
  • เก็บ component ไว้ในโฟลเดอร์ components/
  • ถ้าใช้ TypeScript ให้ใช้ .tsx แทน .jsx

ตัวอย่างโครงสร้าง:

src/
  components/
    Header.tsx
    MyButton.tsx
  App.tsx

เปรียบเทียบกับแนวทางเก่า/ไม่แยกไฟล์

ประเด็นไม่แยกไฟล์ (Anti-pattern)แยกไฟล์ (Best Practice)
ความอ่านง่ายยากเมื่อโปรเจกต์ใหญ่ง่ายและเป็นระเบียบ
การ reuseทำได้ยากทำได้ง่าย
การดูแล/แก้ไขเสี่ยงบั๊ก, ยุ่งยากง่ายและปลอดภัยกว่า

ตัวอย่างการใช้ TypeScript (.tsx)

src/components/Welcome.tsx

tsx
import React from "react";

type WelcomeProps = {
  name: string;
};

export default function Welcome({ name }: WelcomeProps) {
  return <h1>ยินดีต้อนรับ {name}</h1>;
}

สรุปแนวทางที่แนะนำ

  • แยกแต่ละ Component ออกเป็นไฟล์ของตัวเองเสมอ
  • ใช้ .jsx หรือ .tsx ตามภาษาที่ใช้
  • ตั้งชื่อไฟล์และโฟลเดอร์ให้สื่อความหมายและเป็นมาตรฐาน
  • ช่วยให้โค้ดดูแลง่าย ขยายต่อได้ดี และเหมาะกับทีมงาน

การแยกไฟล์ Component เป็นหัวใจของการเขียน React สมัยใหม่ ฝึกใช้แนวทางนี้ตั้งแต่เริ่มต้นจะช่วยให้โปรเจกต์เติบโตอย่างมีคุณภาพและยั่งยืน