การเติมข้อมูลแบบค่อยเป็นค่อยไปด้วยการเติมข้อมูลแบบเลือกเฉพาะ
ใช้การเติมข้อมูลแบบเลือกเฉพาะของรีแอ็กต์ 18 เพื่อให้ความสำคัญกับการเติมข้อมูลส่วนประกอบที่ผู้ใช้โต้ตอบก่อน
การเติมข้อมูลแบบค่อยเป็นค่อยไปด้วยการเติมข้อมูลแบบเลือกเฉพาะ เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
การทำไฮเดรชันแบบเลือกคืออะไร
การทำไฮเดรชันแบบเลือกคือฟีเจอร์ของ React 18 ที่ทำให้ React เริ่มทำไฮเดรชันคอมโพเนนต์ได้ทันทีที่โค้ด JavaScript ของคอมโพเนนต์นั้นมาถึง โดยไม่ต้องรอให้ดาวน์โหลด JavaScript ของทั้งหน้าเสร็จ แต่ละส่วนที่แบ่งโค้ดแยกกันจะทำไฮเดรชันเมื่อชุดโค้ดของส่วนนั้นโหลดเสร็จ ไม่ใช่ทำพร้อมกันทั้งหมด
React 18: ไม่ต้องทำไฮเดรชันครั้งใหญ่ครั้งเดียว
ก่อน React 18 การทำไฮเดรชันเป็นแบบ "ทั้งหมดหรือไม่ก็ไม่มีเลย" — React ต้องดาวน์โหลด JavaScript ทั้งหมดและทำไฮเดรชันให้แผนผังทั้งหมดเสร็จก่อนที่ส่วนใด ๆ ของหน้าจะโต้ตอบได้ React 18 แก้ข้อจำกัดนี้ โดยบางส่วนของแผนผังจะทำไฮเดรชันแยกกันเมื่อโค้ดและข้อมูลของส่วนนั้นพร้อมใช้งาน
การโต้ตอบของผู้ใช้ให้ความสำคัญกับไฮเดรชัน
หากผู้ใช้คลิกหรือโต้ตอบกับขอบเขต Suspense ที่ยังไม่ได้ทำไฮเดรชัน React จะจัดลำดับความสำคัญให้ทำไฮเดรชันแผนผังย่อยนั้นทันที ก่อนงานไฮเดรชันอื่นที่รอดำเนินการ ซึ่งหมายความว่าสิ่งที่ผู้ใช้กำลังพยายามใช้งานจะโต้ตอบได้ก่อน แม้จะไม่ได้อยู่ตามลำดับในเอกสารก็ตาม
React.lazy และ Suspense สำหรับการแบ่งโค้ด
การใช้ React.lazy ร่วมกับการนำเข้าแบบไดนามิกและขอบเขต Suspense ทำให้สามารถทำไฮเดรชันแบบเลือกสำหรับคอมโพเนนต์ที่แบ่งโค้ดได้ เบราว์เซอร์จะดาวน์โหลดชุดโค้ด JS หลักก่อนเพื่อทำไฮเดรชันให้โครงหน้าทันที คอมโพเนนต์ที่โหลดแบบ lazy แต่ละรายการจะทำไฮเดรชันเมื่อชิ้นส่วนโค้ดของรายการนั้นดาวน์โหลดเสร็จ โดยค่อย ๆ ดำเนินการไปตามที่เบราว์เซอร์ดึงข้อมูล
ผลกระทบต่อประสบการณ์ผู้ใช้
ผลลัพธ์คือเนื้อหาที่อยู่ในพื้นที่มองเห็นจะโต้ตอบได้ก่อนที่ JavaScript ของส่วนที่อยู่นอกพื้นที่มองเห็นจะดาวน์โหลดเสร็จ ผู้ใช้สามารถโต้ตอบกับแถบนำทางและ CTA ของส่วนเด่นหลักได้ ขณะที่รายการความคิดเห็นและวิดเจ็ตคำแนะนำยังคงกำลังโหลดชิ้นส่วน JavaScript ของตน
การวัดผลกระทบ
การทำไฮเดรชันแบบเลือกลด Total Blocking Time (TBT) ซึ่งเป็นตัวชี้วัดสำคัญด้านประสิทธิภาพของการทำไฮเดรชัน ในแท็บประสิทธิภาพของ Chrome DevTools งานที่ใช้เวลานาน (งานที่ใช้เวลามากกว่า 50 มิลลิวินาที) จะถูกเน้นด้วยสีแดง ก่อนใช้การทำไฮเดรชันแบบเลือก คุณอาจเห็นงานที่ใช้เวลานานหนึ่งงานซึ่งกินเวลา 300 มิลลิวินาทีสำหรับการทำไฮเดรชันทั้งหมด หลังใช้ คุณจะเห็นงานขนาดเล็กหลายงานที่กระจายออกไปตามเวลา
การหลีกเลี่ยงการนำเข้าระดับบนสุดแบบเร่งด่วน
รูปแบบที่ขัดขวางการทำไฮเดรชันแบบเลือกคือการนำเข้าคอมโพเนนต์ทั้งหมดไว้ที่ด้านบนสุดของแอป: import Footer from './Footer' วิธีนี้บังคับให้เบราว์เซอร์ดาวน์โหลด แยกวิเคราะห์ และเรียกใช้โค้ดของ Footer ก่อนที่การทำไฮเดรชันใด ๆ จะเริ่มขึ้น ให้แทนที่การนำเข้าคอมโพเนนต์ระดับบนสุดที่อยู่นอกพื้นที่มองเห็นด้วย React.lazy และการนำเข้าแบบไดนามิก
การนำเข้าแบบไดนามิกสำหรับเนื้อหาที่อยู่นอกพื้นที่มองเห็น
ใช้ const Footer = React.lazy(() => import('./Footer')) สำหรับคอมโพเนนต์ที่ปรากฏอยู่นอกพื้นที่แสดงผลเริ่มต้น ครอบคอมโพเนนต์เหล่านั้นด้วย Suspense และส่วนสำรองแบบเรียบง่าย เบราว์เซอร์จะลดลำดับความสำคัญในการดึงชุดโค้ดของ Footer จนกว่าการทำไฮเดรชันของเนื้อหาที่อยู่ในพื้นที่มองเห็นจะเสร็จ จึงช่วยปรับปรุง TBT ได้โดยอัตโนมัติ
ความสัมพันธ์ระหว่างการส่งข้อมูลและการทำไฮเดรชันแบบเลือก
การส่งข้อมูลและการทำไฮเดรชันแบบเลือกช่วยเสริมกัน: การส่งข้อมูลจะส่งชิ้นส่วน HTML เพื่อปรับปรุง FCP และ LCP ขณะที่การทำไฮเดรชันแบบเลือกจะประมวลผลชิ้นส่วน JavaScript เพื่อปรับปรุง TTI และ TBT ทั้งสองอย่างร่วมกันแก้ปัญหาทั้งด้าน "การแสดงเนื้อหาให้เร็ว" และ "การทำให้โต้ตอบได้เร็ว" ของประสิทธิภาพ
การทำไฮเดรชันแบบเลือกและ React Server Components
React Server Components ยกระดับการทำไฮเดรชันแบบเลือกให้ก้าวไปอีกขั้น โดยคอมโพเนนต์ฝั่งเซิร์ฟเวอร์จะไม่สร้าง JS สำหรับไคลเอนต์เลย มีเพียงคอมโพเนนต์ฝั่งไคลเอนต์ (ที่ระบุด้วย "use client") เท่านั้นที่ต้องทำไฮเดรชัน วิธีนี้ลดปริมาณ JavaScript ทั้งหมดที่ต้องทำไฮเดรชัน ทำให้การทำไฮเดรชันแบบเลือกมีประสิทธิภาพยิ่งขึ้น
สถาปัตยกรรมการทำไฮเดรชันแบบเลือกที่ใช้งานได้จริง
รูปแบบที่ใช้ได้จริงคือใช้ renderToPipeableStream สำหรับส่ง HTML แบบต่อเนื่อง ครอบหน้าไว้ในการเรียก hydrateRoot ที่ระดับราก (แทน createRoot) เพื่อเปิดใช้โหมดไฮเดรชัน ใช้ React.lazy สำหรับทุกส่วนที่อยู่นอกพื้นที่มองเห็น และครอบแต่ละส่วนด้วยขอบเขต Suspense จากนั้น React จะจัดการส่วนที่เหลือให้โดยอัตโนมัติ
การโต้ตอบของผู้ใช้และการทำไฮเดรชันแบบเลือก
การโต้ตอบของผู้ใช้ส่งผลต่อลำดับความสำคัญของการทำไฮเดรชันแบบเลือกใน React 18 อย่างไร
ทบทวนบทเรียน
การทำไฮเดรชันแบบเลือกทำให้ React ทำไฮเดรชันแผนผังคอมโพเนนต์ย่อยอย่างต่อเนื่องเมื่อ JavaScript ของส่วนนั้นมาถึง แทนที่จะรอชุดโค้ดทั้งหมด การโต้ตอบของผู้ใช้จะให้ความสำคัญกับการทำไฮเดรชันของแผนผังย่อยที่ผู้ใช้เลือก การใช้ React.lazy และการนำเข้าแบบไดนามิกสำหรับเนื้อหาที่อยู่นอกพื้นที่มองเห็นร่วมกับขอบเขต Suspense ทำให้เกิดรูปแบบการทำงานต่อเนื่องนี้ การทำไฮเดรชันแบบเลือกและ SSR แบบส่งข้อมูลต่อเนื่องเป็นเทคนิคที่ช่วยเสริมกัน ซึ่งร่วมกันแก้ปัญหาทั้งด้านการส่งเนื้อหาและประสิทธิภาพการโต้ตอบ
คำถามที่พบบ่อย
บทเรียน “การเติมข้อมูลแบบค่อยเป็นค่อยไปด้วยการเติมข้อมูลแบบเลือกเฉพาะ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเติมข้อมูลแบบค่อยเป็นค่อยไปด้วยการเติมข้อมูลแบบเลือกเฉพาะ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเติมข้อมูลแบบค่อยเป็นค่อยไปด้วยการเติมข้อมูลแบบเลือกเฉพาะ”
ใช้การเติมข้อมูลแบบเลือกเฉพาะของรีแอ็กต์ 18 เพื่อให้ความสำคัญกับการเติมข้อมูลส่วนประกอบที่ผู้ใช้โต้ตอบก่อน คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การเติมข้อมูลแบบค่อยเป็นค่อยไปด้วยการเติมข้อมูลแบบเลือกเฉพาะ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม
ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสตรีมในรีแอ็กต์ 18: renderToPipeableStream ทำงานอย่างไร
- ขอบเขต Suspense และลำดับความสำคัญของการสตรีม
- การเติมข้อมูลแบบค่อยเป็นค่อยไปด้วยการเติมข้อมูลแบบเลือกเฉพาะ
- การวัดผลกระทบของการสตรีม: FCP, TTI และ LCP