เพิ่งทำการสอนและ review ระบที่พัฒนาด้วย React
พบว่ามีข้อผิดพลาดบางอย่างที่มักเกิดขึ้นกับทุก ๆ ระบบ
ซึ่งบ่อยครั้งมันทำงานได้ปกติ แต่ยากต่อการดูแลรักษา
หรือยากต่อการทำความเข้าใจ
จึงสรุปไว้นิดหน่อย
เรื่องแรกคือ การออกแบบและสร้าง component
โดย React นั้นจะยึดตามแนวทางของ Web component
คือแยกการทำงานเป็น component ไป
ซึ่งเลือกพัฒนาได้ทั้ง Class และ function component
แต่ปัจจุบันน่าจะเป็น function component + Hook กันเป็นส่วนใหญ่
ปัญหาที่พบบ่อย ๆ คือ component จะมีขนาดใหญ่
มีหน้าที่รับผิดชอบหรือทำงานเยอะ
แน่นอนว่า ทำงานได้ปกติ และ ตรงตามที่ต้องการ
แต่เมื่อกลับมาแก้ไขหรือหาข้อผิดพลาด
กลับทำให้เสียเวลามากยิ่งขึ้น
ดังนั้นแนวทางที่น่าจะดีกว่าคือ
การแบ่งเป็น component เล็ก ๆ ตามหน้าที่รับผิดชอบ
แต่ไม่ใช่ว่าจะเล็กมากเกินไป ทำให้ยากกว่าเดิมไปอีก
ยิ่งถ้าใครสร้างแบบ function component แล้ว
จะพบว่า มันเอื้อให้ component มีขนาดเล็กลง
ระวัง God component ไว้ให้มาก ๆ
เรื่องที่สอง อย่าทำการแก้ไข state ของ component ตรง ๆ
ให้ใช้ผ่าน method setState() หรือ useState() ของ Hook
ซึ่งจะทำให้เรามั่นใจได้ว่า
ถ้าเปลี่ยน state ผ่านทั้งสองทางแล้วReact
จะทำการ re-render DOM ให้แบบอัตโนมัติและถูกต้อง
แต่อย่าลืมว่าจะทำงานแบบ asynchronous ด้วยนะ
นั่นคือ จะไม่ได้เปลี่ยนและ re-render ทันทีดังนั้น
- ใช้งาน setState() ต้องทำงานร่วมกับ callback ด้วย
- ใช้งาน useState() ต้องทำงานร่วมกับ useEffect() ด้วย
เรื่องที่สาม ในการจัดการ state แบบ Global
แนะนำให้เริ่มจาก Hook context
ก่อนที่จะไปใช้ตัวอื่น ๆ เช่น Redux เป็นต้น
เรื่องอื่น ๆ ที่สำคัญ เช่น
- project structure ที่เหมาะสมกับงาน บางครั้ง project เล็ก ๆ ก็ออกแบบซะเยอะและซับซ้อนไป
- การทดสอบตั้งแต่ unit, component, integration และ end-to-end
- รูปแบบของการตั้งชื่อ
- performance ในการ render และการทำงาน