- ใช้ pattern ที่ดัดแปลงมาจาก
Container/Presentational Pattern- แยกส่วนการทำงานของ logic และ ui ออกจากกัน
- สามารถใช้ความเข้าใจของ
MVCpattern
- ประเภทของไฟล์
<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