0Pricing
React Academy · บทเรียน

Suspense สำหรับขอบเขตข้อมูลและโค้ด

ใช้ Suspense ร่วมกับการโหลดแบบ lazy และไลบรารีข้อมูลในอนาคต เพื่อจัดการสถานะกำลังโหลดได้อย่างเป็นระเบียบ

Suspense สำหรับขอบเขตข้อมูลและโค้ด เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

ยินดีต้อนรับ

ในบทเรียนนี้ คุณจะใช้ React ซัสเพนส์ร่วมกับ React.lazy เพื่อแบ่งโค้ด และใช้ร่วมกับไลบรารีข้อมูลเพื่อแสดงส่วนติดต่อผู้ใช้สำรองขณะที่เนื้อหากำลังโหลด

ซัสเพนส์คืออะไร

ซัสเพนส์เป็นคอมโพเนนต์ของ React ที่ตรวจจับคอมโพเนนต์ในลำดับชั้นย่อยของตนซึ่งกำลังถูกพักไว้ (กำลังรอให้บางอย่างโหลด) แล้วเรนเดอร์ส่วนติดต่อผู้ใช้สำรองแทน
<Suspense fallback={<Spinner />}>
  <MyComponent />
</Suspense>

ซัสเพนส์กับ React.lazy

React.lazy() สร้างคอมโพเนนต์ที่โหลดจากการนำเข้าแบบไดนามิก เมื่อใช้ภายในซัสเพนส์ ส่วนติดต่อผู้ใช้สำรองจะแสดงจนกว่าชุดโค้ด JavaScript จะดาวน์โหลดเสร็จ
const HeavyChart = React.lazy(() => import('./HeavyChart'));

<Suspense fallback={<p>Loading chart...</p>}>
  <HeavyChart />
</Suspense>

คอมโพเนนต์แบบขี้เกียจหลายตัวภายใต้ขอบเขตเดียว

คอมโพเนนต์แบบขี้เกียจหลายตัวที่อยู่ภายใต้ขอบเขตซัสเพนส์เดียวกันจะใช้ส่วนติดต่อผู้ใช้สำรองร่วมกัน React จะรอให้คอมโพเนนต์ทั้งหมด (ALL) โหลดเสร็จก่อนแสดงเนื้อหา ให้ใช้ขอบเขตซ้อนกันสำหรับการโหลดที่เป็นอิสระต่อกัน

ขอบเขตซัสเพนส์แบบซ้อนกัน

ซ้อนขอบเขตซัสเพนส์เพื่อแสดงส่วนต่าง ๆ ของส่วนติดต่อผู้ใช้ทันทีที่โหลดเสร็จ แทนที่จะรอทุกอย่าง ขอบเขตชั้นนอกจะตรวจจับการโหลดที่ช้ากว่า ส่วนขอบเขตชั้นในจะจัดการการโหลดที่เร็วกว่า
<Suspense fallback={<PageSkeleton />}>
  <Header />
  <Suspense fallback={<ChartSkeleton />}>
    <LazyChart />
  </Suspense>
</Suspense>

ซัสเพนส์กับไลบรารีข้อมูล

ไลบรารีอย่าง React Query (ที่ใช้ suspense: true) และ Relay จะพักคอมโพเนนต์ที่กำลังรอข้อมูลไว้ เช่นเดียวกับการโหลดแบบขี้เกียจ โดยขอบเขตซัสเพนส์จะแสดงส่วนติดต่อผู้ใช้สำรองขณะโหลด
const { data } = useQuery({ queryKey: ['users'], queryFn: fetchUsers,
  suspense: true }); // component suspends until data is ready
// No loading check needed — data is always available here

ฮุก use() ใน React 19

ใน React 19 ฮุก `use(promise)` ช่วยให้คุณอ่านพรอมิสได้โดยตรงในคอมโพเนนต์ หากพรอมิสยังอยู่ระหว่างดำเนินการ คอมโพเนนต์จะถูกพักไว้ และขอบเขตซัสเพนส์ที่ใกล้ที่สุดจะแสดงส่วนติดต่อผู้ใช้สำรอง
import { use } from 'react';

function Profile({ userPromise }) {
  const user = use(userPromise); // suspends until resolved
  return <p>{user.name}</p>;
}

SuspenseList สำหรับการแสดงผลตามลำดับ

React.SuspenseList (รุ่นทดลอง) ประสานงานขอบเขตซัสเพนส์หลายขอบเขต เพื่อให้แสดงผลตามลำดับที่กำหนด เช่น จากบนลงล่างหรือแสดงพร้อมกันทั้งหมด ซึ่งช่วยป้องกันไม่ให้ส่วนติดต่อผู้ใช้ปรากฏขึ้นอย่างไร้ลำดับ

ซัสเพนส์ไม่ตรวจจับข้อผิดพลาด

ซัสเพนส์จัดการเฉพาะสถานะขณะโหลดเท่านั้น ไม่ตรวจจับข้อผิดพลาดจากการดึงข้อมูลที่ล้มเหลว ให้ใช้ซัสเพนส์ร่วมกับ Error Boundary เพื่อจัดการทั้งสถานะขณะโหลดและสถานะข้อผิดพลาด
<ErrorBoundary fallback={<Error />}>
  <Suspense fallback={<Spinner />}>
    <DataComponent />
  </Suspense>
</ErrorBoundary>

หน้าจอโครงร่างเป็นส่วนติดต่อผู้ใช้สำรอง

แทนที่จะใช้วงล้อโหลด ให้ใช้หน้าจอโครงร่างเป็นส่วนติดต่อผู้ใช้สำรองของซัสเพนส์ หน้าจอโครงร่างคือเค้าโครงตัวแทนที่มีรูปทรงตรงกับเนื้อหา ช่วยลดการเลื่อนของเค้าโครงเมื่อเนื้อหาปรากฏขึ้น

ตรวจสอบความเข้าใจ

ผู้ใช้จะเห็นอะไรระหว่างที่ดาวน์โหลดชุดโค้ดของคอมโพเนนต์ React.lazy()

สรุป

ซัสเพนส์จะห่อคอมโพเนนต์ที่กำลังโหลดและแสดงส่วนติดต่อผู้ใช้สำรอง ใช้ React.lazy สำหรับการแบ่งโค้ด ใช้โหมดซัสเพนส์ของไลบรารีข้อมูลสำหรับการโหลดข้อมูล และซ้อนขอบเขตเพื่อแสดงผลแบบค่อยเป็นค่อยไปอย่างเป็นอิสระ ใช้ร่วมกับ Error Boundary เพื่อจัดการข้อผิดพลาดอย่างครบถ้วน

เรียนจบหลักสูตรแล้ว

ขอแสดงความยินดีด้วยค่ะ คุณเรียนจบ **รูปแบบอะซิงก์ใน React: พรอมิสและการทำงานพร้อมกัน** แล้ว ตอนนี้คุณสามารถจัดการภาวะการแข่งขัน ใช้ useTransition และ useDeferredValue เพื่อสร้างส่วนติดต่อผู้ใช้ที่ตอบสนองได้ดี และใช้ Suspense สำหรับขอบเขตการโหลดได้แล้ว

คำถามที่พบบ่อย

บทเรียน “Suspense สำหรับขอบเขตข้อมูลและโค้ด” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “Suspense สำหรับขอบเขตข้อมูลและโค้ด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Suspense สำหรับขอบเขตข้อมูลและโค้ด”

ใช้ Suspense ร่วมกับการโหลดแบบ lazy และไลบรารีข้อมูลในอนาคต เพื่อจัดการสถานะกำลังโหลดได้อย่างเป็นระเบียบ คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “Suspense สำหรับขอบเขตข้อมูลและโค้ด” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม

ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เงื่อนไขการแข่งขันและการล้างข้อมูลของเอฟเฟกต์
  2. useTransition สำหรับการอัปเดต UI แบบไม่บล็อก
  3. useDeferredValue สำหรับหน่วงการรับข้อมูล
  4. Suspense สำหรับขอบเขตข้อมูลและโค้ด
← กลับไปที่ React Academy