Dark mode
React ทำงานอย่างไร?
React เป็นไลบรารี JavaScript ที่ใช้สร้าง User Interface (UI) หรือส่วนที่ผู้ใช้มองเห็นและโต้ตอบได้บนเว็บไซต์หรือแอปพลิเคชัน การทำงานหลักๆ ของ React สามารถอธิบายให้เข้าใจง่ายๆ ดังนี้:
1. Components: ตัวต่อเลโก้ของ UI
หัวใจสำคัญของ React คือ Components ลองนึกภาพว่า UI ของเราเหมือนตัวต่อเลโก้ Components ก็คือชิ้นส่วนเลโก้แต่ละชิ้นที่เรานำมาประกอบกันเป็นหน้าเว็บ เช่น ปุ่ม (Button), กล่องข้อความ (Input Field), หรือแม้กระทั่งส่วนใหญ่ๆ อย่างแถบเมนู (Navbar) หรือรายการสินค้า (Product List)
- Reusable: Components สามารถนำกลับมาใช้ซ้ำได้หลายๆ ที่ในแอปพลิเคชัน ทำให้โค้ดกระชับและจัดการง่าย
- Independent: แต่ละ Component ทำงานเป็นอิสระต่อกัน ทำให้แก้ไขและทดสอบได้ง่ายขึ้น
2. Virtual DOM: แบบร่าง UI ในหน่วยความจำ
ปกติเวลาข้อมูลในหน้าเว็บมีการเปลี่ยนแปลง เว็บเบราว์เซอร์จะต้องวาดหน้าเว็บใหม่ทั้งหมด ซึ่งอาจจะช้าถ้าหน้าเว็บมีความซับซ้อน React แก้ปัญหานี้ด้วย Virtual DOM
- DOM (Document Object Model): คือโครงสร้างของหน้าเว็บที่เบราว์เซอร์ใช้แสดงผล
- Virtual DOM: เป็นเหมือน สำเนา หรือ แบบร่าง ของ DOM จริงๆ ที่เก็บไว้ในหน่วยความจำของ JavaScript มันเบาและเร็วกว่า DOM จริงมาก
ขั้นตอนการทำงาน:
- เมื่อ State เปลี่ยน: เมื่อข้อมูลใน Component เปลี่ยนแปลง (เรียกว่า State เปลี่ยน) React จะสร้าง Virtual DOM อันใหม่ขึ้นมา
- เปรียบเทียบ: React จะเปรียบเทียบ Virtual DOM อันใหม่ กับ Virtual DOM อันเก่า (ที่เหมือนกับ DOM จริงในตอนนั้น) เพื่อหาว่ามี อะไรที่แตกต่างกันบ้าง
- อัปเดตเฉพาะส่วน: React จะไม่อัปเดต DOM จริงทั้งหมด แต่จะอัปเดต เฉพาะส่วนที่เปลี่ยนแปลงจริงๆ เท่านั้น
3. Reconciliation: กระบวนการเทียบและอัปเดต
กระบวนการที่ React ใช้เปรียบเทียบ Virtual DOM เก่าและใหม่ แล้วอัปเดตเฉพาะส่วนที่เปลี่ยนไปใน DOM จริง เรียกว่า Reconciliation นี่คือสิ่งที่ทำให้ React ทำงานได้เร็วและมีประสิทธิภาพ
แผนภาพสรุปการทำงาน
อธิบายแผนภาพ:
- User Interaction / Data Change: เริ่มต้นเมื่อผู้ใช้ทำอะไรบางอย่าง (เช่น คลิกปุ่ม) หรือมีข้อมูลใหม่เข้ามา
- State Update in Component: ทำให้ State ของ Component ใน React เปลี่ยนแปลง
- React Creates New Virtual DOM: React สร้าง Virtual DOM ชุดใหม่ตาม State ที่เปลี่ยนไป
- Diffing Algorithm (Reconciliation): React เปรียบเทียบ Virtual DOM ใหม่กับเก่า หาจุดต่าง
- Update Real DOM: ถ้ามีจุดต่าง React จะไปแก้ไข DOM จริงเฉพาะส่วนนั้น
- Real DOM Unchanged: ถ้าไม่มีอะไรต่าง ก็ไม่ต้องทำอะไรกับ DOM จริง
- UI Updated on Screen: ผู้ใช้เห็นหน้าเว็บที่อัปเดตแล้ว
หวังว่าคำอธิบายและแผนภาพนี้จะช่วยให้เห็นภาพการทำงานของ React ชัดเจนขึ้นนะครับ!