Skip to main content
  • ใช้ pattern ที่ดัดแปลงมาจาก Container/Presentational Pattern
    • แยกส่วนการทำงานของ logic และ ui ออกจากกัน
    • สามารถใช้ความเข้าใจของ MVC pattern
  • ประเภทของไฟล์
    • <name>.main.tsx
      • เปรียบเสมือนการรวมกันของ C และ V หรือ Controller และ View ใน MVC
      • จะมีได้เมื่อทำการ generate source code ของ component แล้วเลือก MAIN
    • <name>.container.tsx
      • เปรียบเสมือน C หรือ Controller ใน MVC
      • ทำเกี่ยวกับ state และ logic ต่างๆ ของ feature นั้นๆ
      • หากมีความซับซ้อนมากเกินไป แนะนำให้แยกออกเป็น components/<feature-name> เพื่อง่ายต่อการ maintain
    • <name>.content.tsx
      • เปรียบเสมือน V หรือ View ใน MVC
      • ทำการแสดง ui โดยรับ props มาจาก <name>.container.tsx
    • <name>.model.tsx
      • เปรียบเสมือน M หรือ Model ใน MVC
      • ทำการประกาศ interface/type ไว้ที่นี่
    • <name>.module.css
      • ใช้วิธีการของ CSS module
      • สามารถใช้ร่วมกับ PostCSS ได้
      • เพื่อลดความซ้ำซ้อนของ style ใน <name>.content.tsx
    • <name>.stories.tsx
      • จะมีอยู่ภายใต้ components/ เท่านั้น
      • เพื่อให้คนในทีมสามารถรับรู้ว่ามี component อะไรให้ใช้ และ ตัวอย่างการใช้
    • <name>.test.tsx
      • ไฟล์ unit test
  • ตัวอย่าง
    • แบบ main
    • แบบ container/content